gpt4 book ai didi

postgresql - 在 SQLAlchemy 中设置 PostgreSQL 配置参数

转载 作者:行者123 更新时间:2023-11-29 13:02:13 25 4
gpt4 key购买 nike

我正在为我的 REST 服务器使用 PyramidSQLAlchemy。出于日志记录的目的,我需要一些方法来确定更新触发函数后 postgresql 中的用户名。一种方法是在执行更新之前设置一些运行时配置参数,并在触发器函数中使用该值。

psql 终端中可以使用

set myapp.user_name = 'User Name';

此参数后续会在postgresql触发器中使用。

是否可以在 Pyramid/SQLAlchemy 应用程序中设置此参数?我想我可以使用 SQLAlchemy 事件。但我不确定对于这种情况哪个事件是正确的。

最佳答案

您可以注册一个 Pyramid 事件处理程序,它将在任何新请求上设置参数:

from pyramid import events

def on_new_request(event):
"""
you can access request as event.request
and the current registry settings as event.request.registry.settings
"""
session = DBSession()
session.execute("SET blah TO 'foo'")


def app(global_config, **settings):

config = Configurator(...)
config.add_subscriber(on_new_request, events.NewRequest)

参见 Deployment Settingsevents.NewRequest了解更多详情。

要注意的一件事是确保您始终使用相同的 session 对象 - SQLAlchemy 维护一个连接池,如果您提交 session ,所有后续操作将使用一个全新的 session ,这不是预先- 配置您的设置。换句话说,您不应该在代码中执行 session.commit()、session.rollback()、transaction.commit() 等,而是依赖 ZopeTransactionExtension 在请求/响应周期结束时提交/回滚事务.无论如何,这是推荐的做法。

关于postgresql - 在 SQLAlchemy 中设置 PostgreSQL 配置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26238256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com