You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask-SQLAlchemy如何向不同模型对应表分别执行新增提交操作

操作方法

Flask-SQLAlchemy 中每个继承自db.Model的类,会自动和对应的数据库表做绑定,你创建哪个类的实例,调用db.session.add()时就会自动把数据写入该类对应的表,无需额外手动指定表。

1. 基础写入示例

1.1 向classroom表写入数据

# 1. 实例化classroom类,参数对应模型定义的字段
new_classroom = classroom(
    cName="高二3班",
    cUsername="王老师",
    cWhere="实验楼2层203",
    cLimit=50
)
# 2. 添加到会话,自动匹配classroom对应表
db.session.add(new_classroom)
# 3. 提交会话,数据落地到数据库
db.session.commit()

1.2 向check表写入数据

# 1. 实例化check类,参数对应check模型的字段
new_check = check(
    vUsername="安保员赵六",
    vWhere="实验楼全楼层",
    vLimit=20
)
# 2. 添加到会话,自动匹配check对应表
db.session.add(new_check)
# 3. 提交会话
db.session.commit()

2. 自定义表名的正确配置方法

如果你需要手动指定表名而非使用默认的「小写类名」规则,需要在模型类中添加__tablename__属性,配置示例如下:

class classroom(db.Model):
    # 手动指定对应数据库表名
    __tablename__ = "custom_classroom_table"
    cName = db.Column(db.String(200), nullable=False, primary_key=True)
    cUsername = db.Column(db.String(200), nullable=False)
    cWhere = db.Column(db.String(200), nullable=False)
    cLimit = db.Column(db.Integer, nullable=False)


class check(db.Model):
    __tablename__ = "custom_check_table"
    vUsername = db.Column(db.String(200), nullable=False, primary_key=True)
    vWhere = db.Column(db.String(200), nullable=False)
    vLimit = db.Column(db.Integer, nullable=False)

修改表名配置后,需要重新执行db.create_all()生成新表,或使用数据库迁移工具更新表结构,配置才会生效。

3. 同时写入多张表的操作

如果需要同时向两张表写入数据,可多次调用add()后统一提交即可,数据会自动分发到对应表:

new_classroom = classroom(
    cName="高一1班",
    cUsername="李老师",
    cWhere="教学楼3层301",
    cLimit=48
)
new_check = check(
    vUsername="巡查员孙七",
    vWhere="教学楼3层",
    vLimit=15
)
# 依次添加两个不同类的实例
db.session.add(new_classroom)
db.session.add(new_check)
# 一次提交,两条数据分别写入对应表
db.session.commit()

内容的提问来源于stack exchange,提问作者lllakkka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:24:02