Python 如何在SQLAlchemy中设置连接超时
我正在试图找出如何在Python 如何在SQLAlchemy中设置连接超时,python,postgresql,sqlalchemy,psycopg2,Python,Postgresql,Sqlalchemy,Psycopg2,我正在试图找出如何在create_engine()中设置连接超时,到目前为止我已经尝试了: create_engine(url, timeout=10) TypeError:使用配置pgdialent\u psycopg2/QueuePool/engine将无效参数“timeout”发送到create_engine()。请查收 关键字参数适用于以下组合: 组成部分 TypeError:发送到的参数“连接超时”无效 使用配置创建_引擎() PGU psycopg2/QueuePool/Engin
create_engine()
中设置连接超时,到目前为止我已经尝试了:
create_engine(url, timeout=10)
TypeError:使用配置pgdialent\u psycopg2/QueuePool/engine将无效参数“timeout”发送到create_engine()。请查收
关键字参数适用于以下组合:
组成部分
TypeError:发送到的参数“连接超时”无效
使用配置创建_引擎()
PGU psycopg2/QueuePool/Engine。请检查关键字是否正确
参数适用于此组件组合
(psycopg2.OperationalError)连接选项无效
“超时”
(psycopg2.OperationalError)连接选项无效
“连接超时”
我该怎么办?正确的方法是这样(connection\u timeout
而不是connection\u timeout
):
…它可以与Postgres和MySQL一起使用
ps:(超时以秒为单位定义)回应@nivhanin下面的评论,该评论询问“connect_timeout变量的默认值是多少(通常是针对MySQL数据库的?”(我没有足够的声誉留下评论) Mysql5.7的
connect\u timeout
默认值为
也可能相关:
——等待\u超时
--交互\u超时
create_engine(db_url, connect_args={'connect_timeout': timeout})
将连接超时设置为
超时
对于SQL Server使用远程查询超时
:
create_engine(db_url, connect_args={'connect_timeout': 10})
create_engine(db_url, connect_args={'Remote Query Timeout': 10})
默认值为5秒。对于SQLite3.28.0:
create_引擎(db_name,connect_args={'timeout':1000})
将连接超时设置为1000秒。对于db2后端,请通过
ibm_db2_sa
+pyodbc
:
我查看了源代码,从版本0.3.5(2019/05/30)开始,似乎没有办法控制连接超时:
我发布这篇文章是为了省去其他人查找的麻烦。对于使用Flask SQLAlchemy而不是普通SQLAlchemy的人,您可以选择两种方式将值传递给SQLAlchemy的
创建引擎
:
SQLALCHEMY\u引擎\u选项
配置键(Flask SQLALCHEMY>=2.4必需)flask\u sqlalchemy.sqlalchemy
编辑:示例中使用的
connect\u timeout
参数(至少)适用于MySQL和PostgreSQL(值表示秒),其他DBMS可能需要传递不同的参数名称以影响连接超时。我建议查看DBMS手册以检查此选项。connect\u timeout变量的默认值是多少(一般来说,针对MySQL数据库?FWIW,这里记录了这种语法:pymssql的timeout
。10什么?分钟、秒或毫秒?@Ganesh Satpute seconds!您是否有默认超时为5秒的源代码?默认值为600秒,这与我在应用程序中遇到的各种错误更为一致。)激动。
create_engine(url, pool_timeout=10)
create_engine(db_url, connect_args={'connect_timeout': 10})
create_engine(db_url, connect_args={'connect_timeout': timeout})
create_engine(db_url, connect_args={'Remote Query Timeout': 10})
SQLALCHEMY_ENGINE_OPTIONS = {
'connect_args': {
'connect_timeout': 5
}
}
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(
engine_options={ 'connect_args': { 'connect_timeout': 5 }}
)
db.init_app(app)