0

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 クエリに対して永続化できるかどうかを知りたいです。

4

1 に答える 1

0

私の知る限り、セッションをグローバル名前空間として使用することはできず、とにかく良い考えとは思えません。本当にそれを行う必要がある場合は、SQLAlchemy を認証/ユーザー セッション プロセスに結合するのではなく、他のグローバルまたはセッション状態を使用して、アプリケーションで行う必要があります。

于 2013-11-08T23:43:52.737 に答える