dia*_*ond 0 python sqlalchemy flask python-3.x flask-sqlalchemy
应用程序昨天在家中在不同的系统上运行良好**当我尝试在不同的系统上运行它时(**新安装的所有东西) -所以我认为这个错误仅适用于最新版本。
目标是将会话中的用户连接到第二个数据库
我收到这个错误:
create_engine() missing 1 required positional argument: 'engine_opts'
我目前的代码:
app.config['SQLALCHEMY_DATABASE_URI'] = "postgres:// ****" #main database
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = "True"
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = "None" #i didnt have that line in my system
before i've just added it in attempt of fixing this issue
db = SQLAlchemy(app,session_options={"autoflush": False})
@app.route('/test')
def test():
x = 'postgres://*****' #secondary database for user in session only.
engine = db.create_engine(x)
return ''
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
检查库页面: flask_SQLAlchemy Library
我发现的一切是这样的:
create_engine ( sa_url, engine_opts ) 覆盖此方法以对如何创建 SQLAlchemy 引擎拥有最终决定权。
在大多数情况下,您将希望使用 'SQLALCHEMY_ENGINE_OPTIONS' 配置变量或为 SQLAlchemy() 设置 engine_options。
谷歌搜索后,我看到了一些例子,但没有一个起作用。
尝试#01:
db.create_engine(DB_URL,**engine_opts)
输出:
NameError:未定义名称“engine_opts”
尝试#02:
db.create_engine(DB_URL,**db.engine_opts)
输出:
AttributeError: 'SQLAlchemy' 对象没有属性 'engine_opts'
尝试#03:
db.create_engine(DB_URL,engine_opts='None')
输出:
类型错误:** 之后的 create_engine() 参数必须是映射,而不是 str
尝试#04:
db.create_engine(DB_URL,engine_opts=None)
类型错误:** 之后的 create_engine() 参数必须是映射,而不是 NoneType
尝试#05:
db.create_engine(xDB,db.engine_opts='None')
系统崩溃“甚至没有运行”:
语法错误:关键字不能是表达式
尝试#06:
db.create_engine(xDB,{'SQLALCHEMY_ENGINE_OPTIONS': None})
输出:
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'
Run Code Online (Sandbox Code Playgroud)
尝试#07:
psycopg2基于#Attempt06安装后
db.create_engine(xDB,{'SQLALCHEMY_ENGINE_OPTIONS': None})
输出:
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.
Run Code Online (Sandbox Code Playgroud)
综上所述 :
db.create_engine(DB_URL,{}) 为我工作。
解释原因:
flask_SQLAlchemy我自己电脑上的版本是2.3.2
新安装的版本是 2.4.0
它具有该功能,您可以在那里阅读。flask_SQLAlchemy - 更改版本 2.4.0
这改变了我们创建新引擎的方式。以前
db.create_engine(DB_URL)就够了
| 归档时间: |
|
| 查看次数: |
3224 次 |
| 最近记录: |