项目文件结构
stusys/ ├── models │ ├── __init__.py # SQLAlchemy │ ├── user.py # 创建数据库 ├── settings │ ├── dev.py # 连接数据库配置 │ ├── index.py # 配置文件 ├── view │ ├── user.py # 请求 ├── create_flask.py # 配置app ├── main.py # 运行文件 └── mifrate.py # 主程序文件
依赖包
pip install flask pip install flask-sqlalchemy pip install pymysqlflask连接创建数据库
index.py
class DefaultConfig:
SECRET_KEY = '123456'
dev.py
from index import DefaultConfig
class DevConfig(DefaultConfig):
DEBUG = True
# 数据库的配置
# 连接mysql的路由
SQLALCHEMY_DATABASE_URI = 'mysql://root:204348@127.0.0.1:3306/jiyunstus'
# 设置为True, 数据表修改时自动触发, 会显示修改, 但是需要额外的内存
SQLALCHEMY_TRACK_MODIFICATIONS = False
# 设置为True, 会在终端下显示出所有的执行过程
SQLALCHEMY_ECHO = True
create_flask.py
from flask import Flask
from flask_cors import CORS
from models import db
from views.user import user_bp
def create_factory_app(list):
app = Flask(__name__)
app.config.from_object(list)
CORS(app)
# 初始化整个项目的
db.init_app(app)
# 注册蓝图
app.register_blueprint(user_bp)
return app
init
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy()
user.py
from models import db
# 新建表User
class User(db.Model):
__tablename__='users'
id=db.Column(db.Integer, primary_key=True)
username=db.Column(db.String(64), unique=True, index=True) #索引
email = db.Column(db.String(64),unique=True)
pswd = db.Column(db.String(64))
role_id=db.Column(db.Integer, db.ForeignKey('roles.id')) # 外键
def __repr__(self):
return '' %self.username
迁移表: migrate.py
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from main import app
from models import db
# 需要导入需要迁移的数据表, 否则不会生成表
from models.user import UserModel
manager = Manager(app)
# 生成迁移文件
migrate = Migrate(app, db)
# 添加迁移命令: db 时迁移时的参数, MigrateCommand是命令
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
执行迁移的命令
# 执行迁移命令 python migrate.py db init python migrate.py db migrate python migrate.py db upgrade
连接到一起
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SECRET_KEY'] = '123456'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:204348@localhost:3306/jiyunstus'
# 协议:mysql+pymysql
# 用户名:root
# 密码:204348
# IP地址:localhost
# 端口:3306
# 数据库名:jiyunstus # 这里的数据库需要提前建好
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
db=SQLAlchemy(app)
# 新建表User
class User(db.Model):
__tablename__='users'
id=db.Column(db.Integer, primary_key=True)
username=db.Column(db.String(64), unique=True, index=True) #索引
email = db.Column(db.String(64),unique=True)
pswd = db.Column(db.String(64))
role_id=db.Column(db.Integer, db.ForeignKey('roles.id')) # 外键
def __repr__(self):
return self.username
if __name__=='__main__':
db.run()



