Elixir を使用して MSSQL データベースに接続しています。データベースには、計算列を含むテーブルがあります。ただし、オブジェクト内の他の列を更新して変更をコミットすると、計算列に挿入できないことが python から通知されます。
私はオートロードを使用しているので、私のモデルでは:
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()
重要な注意点!!EndDateTime は計算フィールドであるため、ss オブジェクトには値を与えません。事実上、そのフィールドのデータベースには何も返していません。
エラー:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000] [FreeTDS][SQL Server]列 "EndDateTime" は、計算列であるか、UNION 演算子の結果であるため、変更できません。( 271) (SQLPrepare)') 'INSERT INTO sch.[tbScheduleSlots] ([Program_ID], [SlotType_ID], [StartDateTime], [EndDateTime], [Duration], [Description], [Notes], [State], [MasterSlot_ID] ]) OUTPUT が挿入されました。 、なし、なし、なし、2、なし)