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

表结构如下:

相关推荐
丰锋ff8 小时前
3.1 Qt事件之事件处理器
开发语言·qt
多弗朗皮卡丘8 小时前
C语言梦开始的地方7:函数
c语言·开发语言
布莱克6058 小时前
理解索引:从概念到实践
数据库·mysql
月华路8 小时前
G1 垃圾回收:脏卡队列、记忆集与并发精化线程机制
java·开发语言
XLYcmy9 小时前
京东 算法实习一面 下+手撕
c++·python·llm·概率论·数据处理·训练·codebert
虎头金猫9 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
从零开始学习人工智能9 小时前
WSL2部署CUDA12+cuDNN9踩坑实录:ONNX Runtime GPU推理环境搭建全流程
python
gugucoding9 小时前
47. 【Java】Java内存模型(JMM)与可见性
java·开发语言
m0_380743879 小时前
从零调用 Claude 教程
开发语言·python·node.js
起床学FPGA9 小时前
AI回答问题之后,会自动跳到最下面的问题
开发语言·javascript·ecmascript