一周学会Flask3 Python Web开发-使用SQLAlchemy动态创建数据库表

锋哥原创的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表:

表结构如下:

相关推荐
pusue_the_sun1 分钟前
C语言强化训练(12)
c语言·开发语言·算法
JosieBook11 分钟前
【SpringBoot】21-Spring Boot中Web页面抽取公共页面的完整实践
前端·spring boot·python
失散1327 分钟前
分布式专题——1.1 Redis单机、主从、哨兵、集群部署
java·数据库·redis·分布式·架构
2301_7795037636 分钟前
MySQL集群高可用架构---mysql高可用之组复制 (MGR)
数据库·mysql·架构
UrbanJazzerati1 小时前
掌握 xlwings 的 used_range:高效处理 Excel 数据区域
python·面试·excel
Hello.Reader1 小时前
一文通关 Proto3完整语法与工程实践
java·linux·数据库·proto3
counting money1 小时前
JAVA泛型基础
java·开发语言·eclipse
007php0071 小时前
Go语言面试:传值与传引用的区别及选择指南
java·开发语言·后端·算法·面试·golang·xcode
XerCis1 小时前
Python的RSS/Atom源解析库feedparser
开发语言·python
algonaut1 小时前
adobe acrobat 安装到使用再到PDF编辑【适合小白,只看一篇就够!!!】
java·开发语言·其他·pdf