我正在使用Elixir連接到MSSQL數據庫。數據庫中有一個帶有計算列的表。但是,當我更新對象中的其他列並提交更改時,python告訴我我無法插入計算列。如何在使用Elixir寫入數據庫時單獨保留計算字段session.commit()
我正在使用的自動加載所以在我的模型:
class Slot(Entity):
using_options(tablename='tbScheduleSlots', autoload=True)
using_table_options(schema='sch')
我創建了一個插槽,並給它一些值,然後提交:
ss = Slot(StartDateTime='2012-01-01 13:00:00:000', Program_ID=1234, etc)
session.commit()
重要提示!我不給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)
需要更多信息!你如何定義你的表類?你如何更新列?你看到什麼錯誤信息?至少需要一些代碼片段。 – seb 2011-03-29 15:05:45
你是對的,對不起。希望我的編輯更好 – MFB 2011-03-29 16:14:07
我不知道是否有一個選項來告訴它忽略計算字段或某些字段的名稱? – HardCode 2011-04-01 14:49:19