cla*_*lay 4 python postgresql sqlalchemy
以下Python代码段说明了此问题:
print("starting")
# I am trying to configure a query/command timeout of one second.
# sqlalchemy docs suggest execution_options but the documented list of options doesn't include a timeout:
# http://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Connection.execution_options
# Below, I am guessing at several likely timeout parameter names:
db_engine = create_engine("postgresql://user:pass@server/catalog",
execution_options={"timeout": 1.0,
"statement_timeout": 1.0,
"query_timeout": 1.0,
"execution_timeout": 1.0})
with db_engine.connect() as db_connection:
print("got db_connection")
# Artificially force a two second query time with pg_sleep.
# This is designed to guarantee timeout conditions and trigger an exception.
result_proxy = db_connection.execute("SELECT pg_sleep(2);")
# If the timeout worked, this statement will not execute.
# Currently, it does execute, which means my timeout isn't working.
print("Query successfully complete. Got result_proxy")
Run Code Online (Sandbox Code Playgroud)
您可以statement_timeout通过中的options参数libpq来设置配置值。您可以psycopg2在connect调用过程中访问此参数。您可以通过参数将其他参数传递connect给SQLAlchemy 的调用connect_args。因此,将它们放在一起:
engine = create_engine(..., connect_args={"options": "-c statement_timeout=1000"})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4617 次 |
| 最近记录: |