如何在使用Elixir写入数据库时保留计算字段会话.提交()

2024-09-29 23:19:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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)


Tags: 对象noneid数据库iscolumnoptionsusing
1条回答
网友
1楼 · 发布于 2024-09-29 23:19:28

呃,我不是Python程序员,但似乎这行:

using_options(tablename='tbScheduleSlots', autoload=True)

使用autoload的可能是向INSERT语句添加[EndDateTime](如错误消息中所示)。看起来这是告诉Python底层表的元数据(即表中的字段)的行。寻找一种方法来定义要手动更新的列。依赖Python构建INSERT似乎会自动将[EndDateTime]包含在底层查询中。在

相关问题 更多 >

    热门问题