我正在使用Elixir连接到MSSQL数据库。数据库中有一个包含计算列的表。但是,当我更新对象中的其他列并提交更改时,python告诉我不能插入到计算列中。在
我在我的模型中使用autoload,所以:
class Slot(Entity):
using_options(tablename='tbScheduleSlots', autoload=True)
using_table_options(schema='sch')
我创建了一个插槽并给它一些值,然后提交:
^{pr2}$重要提示!!我没有给ss对象任何EndDateTime值,因为这是一个计算字段。因此,有效地,我不会将该字段的任何内容传回数据库。在
错误:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000] [FreeTDS][SQL Server]The column "EndDateTime" cannot be modified because it is either a computed column or is the result of a UNION operator. (271) (SQLPrepare)') 'INSERT INTO sch.[tbScheduleSlots] ([Program_ID], [SlotType_ID], [StartDateTime], [EndDateTime], [Duration], [Description], [Notes], [State], [MasterSlot_ID]) OUTPUT inserted.[ID_ScheduleSlot] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' (5130, 1, '2012-01-01 13:00:00:000', None, None, None, None, 2, None)
呃,我不是Python程序员,但似乎这行:
使用autoload的可能是向INSERT语句添加
[EndDateTime]
(如错误消息中所示)。看起来这是告诉Python底层表的元数据(即表中的字段)的行。寻找一种方法来定义要手动更新的列。依赖Python构建INSERT似乎会自动将[EndDateTime]
包含在底层查询中。在相关问题 更多 >
编程相关推荐