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
相关产品推荐
相关产品推荐

