![](/img/trans.png)
[英]Create a sqlalchemy engine using an existing psycopg2 connection pool
[英]sqlalchemy.pool + psycopg2 timeout issue
我有一个Web应用程序超时问题,我怀疑该错误在数据库中。 查询运行时间过长。
如何增加设置的允许运行时间?
我通过使用sqlalchemy
和psycopg2
使用数据库池。
我的数据库是Postgres数据库。
import psycopg2
import sqlalchemy.pool as pool
def generate_conn_string(db_name):
db_name = db_name.upper()
conn_string = "host='{}' port='{}' dbname='{}' user='{}' password='{}' ".format(
os.environ.get('DB_HOST_' + db_name),
os.environ.get('DB_PORT_' + db_name),
os.environ.get('DB_NAME_' + db_name),
os.environ.get('DB_USER_' + db_name),
os.environ.get('DB_PASSWORD_' + db_name))
return conn_string
def get_conn_():
db_name = "mydb"
conn_string = Pooling.generate_conn_string(db_name)
conn = psycopg2.connect(conn_string)
return conn
connection_pool = pool.QueuePool(get_conn, max_overflow=30, pool_size=5)
我假设您正在询问PostgreSQL中的语句超时 。 您使用SQLAlchemy的方式有些奇怪,但是普通的SQLAlchemy构造函数接受了一个额外的connect_args
参数,该参数可以这样使用
engine = create_engine(..., connect_args={"options": "-c statement_timeout=5000"})
请注意,超时时间以毫秒为单位。 在您的情况下,可以将选项与直接的psycopg2 / libpq一起使用:
conn = psycopg2.connect(conn_string, , options='-c statement_timeout=5000')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.