Flask-SQLAlchemy如何插入预先指定主键值的数据库记录
问题原因与解决方案
1. 补全主键字段的类型定义
你提供的模型代码中,id主键列未指定数据类型,SQLAlchemy无法正确识别字段属性,会默认将整数主键判定为自增字段,插入时自动跳过手动赋值的主键。把列定义修改为:
id = db.Column(db.Integer, primary_key=True, autoincrement=False)
如果需要进一步强制SQLAlchemy不使用任何主键自动生成逻辑,可以补充default=None配置:
id = db.Column(db.Integer, primary_key=True, autoincrement=False, default=None)
2. 初始化实例时直接传入主键参数
避免后续赋值可能带来的属性识别问题,创建实例时直接传入所有字段值即可:
model = TestModel(id=1234, value='Some string')
3. 模型元数据刷新问题
如果修改代码后问题仍存在,属于开发环境热重载没有刷新SQLAlchemy的模型元数据导致,重启应用服务加载最新的模型配置即可解决,这也和你补充的重启后恢复正常的情况一致。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

