锋哥原创的Flask3 Python Web开发 Flask3视频教程:
2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili
前面我们定义了模型,我们可以通过sqlalchemy对象提供的create_all()方法来映射和动态创建数据库表。
因为我们用到了模块化蓝图blueprint,这个sqlalchemy对象会在app.py和蓝图模块之间互相调用,导致循环依赖问题。所以我们的解决方案是单独把sqlalchemy对象放扩展文件下,然后app.py和各个蓝图模块分别单独调用。
具体实现方案如下:
先在项目目录下新建exts.py扩展python文件。
# flask-sqlalchemy
from flask_sqlalchemy import SQLAlchemy# 创建SQLAlchemy对象
db = SQLAlchemy()
app.py里面引入exts里的db对象:
from exts import db
然后通过init_app方法初始化sqlalchemy
# sqlalchemy初始化
db.init_app(app)
student.py里也换成exts里的db:
from exts import db
最后我们app.py里调用db的create_all()方法创建数据库表:
with app.app_context():# 根据模型建表db.create_all()
控制台输出:
db_flask数据库下动态生成了t_grade表:
表结构如下: