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

表结构如下:

相关推荐
bing.shao5 分钟前
mongodb与redis在聊天场景中的选择
数据库·redis·mongodb
dudke5 分钟前
c#实现redis的调用与基础类
数据库·redis·缓存
苦学编程的谢6 分钟前
Redis_7_hash
数据库·redis·哈希算法
许愿OvO7 分钟前
MySQL-索引
数据库·mysql
-指短琴长-8 分钟前
MySQL快速入门——基本查询(上)
android·数据库·mysql
星释11 分钟前
Rust 练习册 :Minesweeper与二维数组处理
开发语言·后端·rust
Q_Q196328847529 分钟前
python+django/flask基于深度学习的个性化携程美食数据推荐系统
spring boot·python·深度学习·django·flask·node.js·php
胡耀超32 分钟前
通往AGI的模块化路径:一个可能的技术架构(同时解答微调与RAG之争)
人工智能·python·ai·架构·大模型·微调·agi
Yeats_Liao43 分钟前
时序数据库系列(四):InfluxQL查询语言详解
数据库·后端·sql·时序数据库
清空mega1 小时前
从零开始搭建 flask 博客实验(常见疑问)
后端·python·flask