Flask SQL Alchemy尝试在不需要的时候执行SET操作



我在使用SQL Alchemy时遇到了一个非常奇怪的问题。我在SQL server中有一个表,用于存储Sales,格式如下:

CREATE TABLE Resale (
[address] VARCHAR(100) NOT NULL,
[id] BIGINT NOT NULL,
[price] INT NOT NULL,
[start_date] DATETIME2(7) NOT NULL  DEFAULT GETUTCDATE(),
[sys_start_time] DATETIME2 (7) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
[sys_end_time] DATETIME2 (7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
PERIOD FOR SYSTEM_TIME ([sys_start_time], [sys_end_time]),
CONSTRAINT [PK_ReSale] PRIMARY KEY CLUSTERED ([id] ASC))
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE=[dbo].[ResaleHistory], DATA_CONSISTENCY_CHECK=ON));
在python中,我使用flask-sqlalchemy构建了这个模型:
class Resale(db.Model):
__tablename__ = 'Resale'
address = db.Column(db.String(100), nullable=False)
id = db.Column(db.BigInteger, primary_key=True)
price = db.Column(db.Integer, nullable=False)
start_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())

现在我只是试图插入一个记录在这个表中使用:

resale = Resale(address=address, id=id, price=price)
db.session.add(resale)
db.session.commit()

和烧瓶返回:

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Table 'Resale' does not have the identity property. Cannot perform SET operation. (8106) (SQLExecDirectW)")
[SQL: SET IDENTITY_INSERT [Resale] ON]

我真的不明白为什么我有这个,我没有在我的表中使用自动递增,所以我的flask希望我做"SET IDENTITY_INSERT Resale ON ?

老实说,我完全失去了这个消息,我只是想在数据库中添加一个记录

对于之前的一个类似问题,您应该考虑使用"自动递增"标志。为False

相关内容

  • 没有找到相关文章

最新更新