如何在与 SQLAlchemy 和 psycopg2 的 PostgreSQL 连接上设置“lock_timeout”?
Posted
技术标签:
【中文标题】如何在与 SQLAlchemy 和 psycopg2 的 PostgreSQL 连接上设置“lock_timeout”?【英文标题】:How to set `lock_timeout` on a PostgreSQL connection with SQLAlchemy and psycopg2? 【发布时间】:2020-04-30 15:40:58 【问题描述】:使用 PostgreSQL,您可以运行此查询来为会话设置特定的 lock_timeout
:
SET lock_timeout TO '3s'
我想知道在设置与 SQLAlchemy 的连接时是否有设置此选项的好方法。我实例化 SQLAlchemy 会话的方式如下:
engine = create_engine('postgresql+psycopg2://user:pswd@host:port/name')
session = scoped_session(sessionmaker(bind=engine))
我尝试将它传递给connect_args
,但不支持:
engine = create_engine(
'postgresql+psycopg2://user:pswd@host:port/name',
connect_args='lock_timeout': 3
)
有没有办法使用 SQLAlchemy 和 psycopg2 为每个会话/连接设置此选项?
【问题讨论】:
【参考方案1】:事实证明,这是为会话设置lock_timeout
的正确方法(注意该值以毫秒为单位):
engine = create_engine(
'postgresql+psycopg2://user:pswd@host:port/name',
connect_args='options': '-c lock_timeout=3000'
)
【讨论】:
connect_args='lock_timeout': 3
方法不起作用还是不是正确的方法?另外,你能分享一些文档的链接吗?我不是这样找到的:'options': '-c lock_timeout=3000'
在文档中的任何地方传递参数。以上是关于如何在与 SQLAlchemy 和 psycopg2 的 PostgreSQL 连接上设置“lock_timeout”?的主要内容,如果未能解决你的问题,请参考以下文章
SQLAlchemy、Psycopg2 和 Postgresql 复制
SQLAlchemy,Psycopg2和Postgresql COPY
如何使用Flask,SQLAlchemy或psycopg2从Postgres中的光标获取数据