方法を尋ねる前に、私は最初にそれが可能かどうか尋ねるかもしれません。
では、SQLAlchemyで、実際にマップされているテーブルのすべての列のうち、テーブルの一部の列のみを永続化することは可能ですか?
実際、私のテーブルには、データベースによって計算される1つの列があり、データベースユーザーが変更することはできません。私は実際にそうする特権を取り消しました。
私の問題は、SQLAlchemyがすべての列に値を挿入しようとしていることです:
INSERT INTO mytable(data_1、data_2、...、data_n、computed_data)VALUES..。
代わりに、私はこれを実行したいと思います:
INSERT INTO mytable(data_1、data_2、...、data_n)VALUES..。
それが可能かどうか誰かが知っていますか?はいの場合、この動作を構成する方法は?
ありがとう
2012-12-21:編集
これが私の設定です:
_mytable = Table('mytable', Base.metadata,
Column('id', Integer, primary_key=True),
Column('somedata', String),
Column('protecteddata', String),
)
class MyObject(Base):
__table__ = _mytable
_id = _mytable.c.id
def __init__(self, somedata):
self.somedata = somedata
ORMを使用したINSERTについて話しています。'protecteddata'に値を指定しない場合、コミット時にSQLAlchemyは'protecteddata'にNoneを提供するようです。