Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在SQLAlchemy中设置连接超时_Python_Postgresql_Sqlalchemy_Psycopg2 - Fatal编程技术网

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超时
    --

对于sqlite后端:

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)