我正在开发一个使用 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 查询保留。