一周学会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表:

表结构如下:

相关推荐
晋阳十二夜4 小时前
【压力测试之_Jmeter链接Oracle数据库链接】
数据库·oracle·压力测试
郭庆汝4 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
GDAL5 小时前
Node.js v22.5+ 官方 SQLite 模块全解析:从入门到实战
数据库·sqlite·node.js
DCTANT6 小时前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
黄雪超6 小时前
JVM——函数式语法糖:如何使用Function、Stream来编写函数式程序?
java·开发语言·jvm
ThetaarSofVenice6 小时前
对象的finalization机制Test
java·开发语言·jvm
思则变7 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
lijingguang7 小时前
在C#中根据URL下载文件并保存到本地,可以使用以下方法(推荐使用现代异步方式)
开发语言·c#
漫谈网络7 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
¥-oriented7 小时前
【C#中路径相关的概念】
开发语言·c#