首页 > 解决方案 > 如何在与 SQLAlchemy 和 psycopg2 的 PostgreSQL 连接上设置“lock_timeout”?

问题描述

lock_timeout使用 PostgreSQL,您可以运行此查询来设置会话的特定内容:

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 为每个会话/连接设置此选项?

标签: pythonpostgresqlsqlalchemypsycopg2

解决方案


事实证明,这是lock_timeout为会话设置的正确方法(注意该值以毫秒为单位):

engine = create_engine(
    'postgresql+psycopg2://{user}:{pswd}@{host}:{port}/{name}',
    connect_args={'options': '-c lock_timeout=3000'}
)

推荐阅读