Python create_engine()缺少1个必需的位置参数:“engine_opts”

Python create_engine()缺少1个必需的位置参数:“engine_opts”,python,python-3.x,flask,sqlalchemy,flask-sqlalchemy,Python,Python 3.x,Flask,Sqlalchemy,Flask Sqlalchemy,昨天,当我尝试在不同的系统上运行应用程序时,应用程序在不同的系统上运行的很好**新安装的所有东西-所以我假设这个错误只适用于最新版本 目标是将会话中的用户连接到第二个数据库 我得到了这个错误: create_engine缺少1个必需的位置参数:“engine_opts” 我当前的代码: 我尝试过的事情: 正在检查库页面: 我所发现的是: 创建引擎url,引擎选择覆盖此方法以获得最终结果 说说SQLAlchemy引擎是如何创建的 在大多数情况下,您会希望使用'SQLALCHEMY\u ENGINE

昨天,当我尝试在不同的系统上运行应用程序时,应用程序在不同的系统上运行的很好**新安装的所有东西-所以我假设这个错误只适用于最新版本

目标是将会话中的用户连接到第二个数据库

我得到了这个错误: create_engine缺少1个必需的位置参数:“engine_opts”

我当前的代码:

我尝试过的事情:

正在检查库页面:

我所发现的是:

创建引擎url,引擎选择覆盖此方法以获得最终结果 说说SQLAlchemy引擎是如何创建的

在大多数情况下,您会希望使用'SQLALCHEMY\u ENGINE\u OPTIONS'配置 SQLAlchemy的变量或设置引擎选项

在谷歌搜索之后,我看到了一些例子,但没有一个奏效

尝试01:

创建引擎的URL,**引擎选项

输出:

NameError:未定义名称“引擎选项”

尝试02:

db.create_engineDB_URL,**db.engine_选项

输出:

AttributeError:'SQLAlchemy'对象没有属性'engine_opts'

尝试03:

db.create_engineDB_URL,engine_opts='None'

输出:

TypeError:create_引擎参数在**之后必须是映射,而不是str

尝试04:

db.create_enginedbu URL,engine_opts=None

TypeError:在**之后创建引擎参数必须是映射,而不是非非类型

尝试05:

db.create_enginexDB,db.engine_opts='None'

系统崩溃甚至没有运行:

SyntaxError:关键字不能是表达式

尝试06:

create_enginexDB,{'SQLALCHEMY_ENGINE_OPTIONS':None}

输出:

尝试07:

基于Attempt06安装psycopg2后

create_enginexDB,{'SQLALCHEMY_ENGINE_OPTIONS':None}

输出:

总之:

create_enginedbu URL,{}为我工作

解释原因:

我个人电脑上的flask_SQLAlchemy版本是2.3.2

新安装的版本是2.4.0

它有这个功能,你可以在那里阅读

使发动机配置更加灵活 这改变了我们创建新引擎的方式。 在db.create_engined之前,b_URL就足够了


我遇到了同样的问题。我把它修好了

尝试:

而不是:

import SQLAlchemy

db = SQLAlchemy()
db.create_engine(URI)

None不应该是字符串,它是python对象,所以请保留它unquoted@roganjoshTypeError:在**之后创建引擎参数必须是映射,而不是NoneType@AbdulNiyasPM我刚刚添加了它,请参考尝试06“导入psycopg2模块NotFoundError:没有名为“psycopg2”的模块”@AnttiHaapala我对您的理性决策非常不满,我有两台笔记本电脑,两台都是windows 10,我在闪存驱动器中安装了应用程序,以确保在两台电脑上运行的代码完全相同,我的个人笔记本电脑运行的代码很好,其他人则提出了有关engine_opts的错误,我从没想过像你这样有着受人尊敬的代表的人会这么快判断一个情况。。。谢谢你的意见。@AnttiHaapala是的,你确实提到过,但你从未解释过为什么,据我所知,flask_sqlAlchemy只是sqlAlchemy的包装,无论如何,我已经检查了两款笔记本电脑的版本flask_sqlAlchemy 2.4.0/sqlAlchemy 1.3.3,正在工作的Lask_sqlAlchemy 2.3.2/sqlAlchemy 1.2.11。。。。我还应该提到,在笔记本电脑上,我有两列库,可能是anaconda或其他我在不同项目中使用的库的一部分。
 return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\project1\app.py", line 175, in test
    engine = db.create_engine(xDB,{'SQLALCHEMY_ENGINE_OPTIONS': None})
  File "C:\Users\Rick\AppData\Local\Programs\Python\Python37\lib\site-packages\flask_sqlalchemy\__init__.py", line 966, in create_engine
    return sqlalchemy.create_engine(sa_url, **engine_opts)
  File "C:\Users\Rick\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\__init__.py", line 435, in create_engine
    return strategy.create(*args, **kwargs)
  File "C:\Users\Rick\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\strategies.py", line 87, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "C:\Users\Rick\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\dialects\postgresql\psycopg2.py", line 632, in dbapi
    import psycopg2
ModuleNotFoundError: No module named 'psycopg2'
TypeError: Invalid argument(s) 'SQLALCHEMY_ENGINE_OPTIONS' sent to create_engine(), using configuration PGDialect_psycopg2/QueuePool/Engine.  Please check that the keyword arguments are appropriate for this combination of components.
from SQLAlchemy import create_engine

engine = create_engine(URI)
import SQLAlchemy

db = SQLAlchemy()
db.create_engine(URI)