SQLALchemy を使用して SQL テーブルを操作するソフトウェアに取り組んでいます。ユーザーが実行する各操作 (挿入、変更、削除) は、特定の LOG テーブルに記録する必要があります。
ログテーブルは次のようになります。
+-----------+----------------------------------------------+
| user_id | log |
+-----------+----------------------------------------------+
| 21 | Value x added in table y |
| 12 | Value z deleted from table w |
このようなログを書き込むために、次のプロトタイプを使用して新しいログを挿入する関数を Log テーブルに定義します。
class Foo(Base):
__tablename__ = 'foo'
id = Column(Integer, primary_key=True)
value = Column(String)
@staticmethod
def insert(value):
item = Foo()
item.value = value
session.add(item)
Log.add(item)
class Log(Base):
user_id = Column(Integer, not_null=True)
value = Column(String, not_null=True)
@saticmethod
def add(item):
logitem = Log()
logitem.user_id = x
logitem.value = "Insertion of %s" % item.value
session.add(logitem)
ユーザーの「x」が定義されていないため、上記のコードは機能しません。
Foo.insert メソッドを呼び出すときに、引数として user_id を渡したくありません。user_id をセッションにバインドして、user_id を一度定義し、すべての SQL クエリに対して永続化できるかどうかを知りたいです。