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

Flask-SQLAlchemy插入SQL Server表触发不必要SET操作报错如何解决?

问题原因

SQLAlchemy针对整型主键字段有默认行为:只要字段被标记为primary_key=True且类型为整型,就会默认判定该字段为自增列,对应SQL Server的IDENTITY属性。当你显式为该字段赋值并执行插入操作时,SQLAlchemy会自动执行SET IDENTITY_INSERT [表名] ON语句,用于允许显式插入自增列的值。但你的建表语句中id字段没有设置IDENTITY自增属性,因此SQL Server会返回该表没有IDENTITY属性无法执行SET操作的报错。

解决方案

只需要在Resale模型的id字段定义中,显式添加autoincrement=False参数,关闭SQLAlchemy对该字段的自增默认判定即可。修改后的模型代码如下:

class Resale(db.Model):
    __tablename__ = 'Resale'
    address = db.Column(db.String(100), nullable=False)
    # 新增autoincrement=False参数,关闭自增默认判定
    id = db.Column(db.BigInteger, primary_key=True, autoincrement=False)
    price = db.Column(db.Integer, nullable=False)
    # 补充小提示:此处default不要加括号,否则会取服务启动时间而非插入时的当前时间
    start_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:42:03