Python编译脚本给出“无法加载插件:sqlalchemy.dialects:presto”的错误

nul*_*lne 5 python sqlalchemy pyinstaller presto trino

我用 pyinstaller 编译了 .py 文件,如下所示:

pyinstaller --hidden-import presto --hidden-import scipy._lib.messagestream  --onefile main.py
Run Code Online (Sandbox Code Playgroud)

当我运行编译文件时,出现错误:

sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:presto
Run Code Online (Sandbox Code Playgroud)

ps 我使用 sqlalchemy.engine 连接到 presto,如:

engine = create_engine('presto://presto.service.example.com:8080/hive/default')
Run Code Online (Sandbox Code Playgroud)

我在谷歌上没有找到任何有用的东西。

小智 0

我对 Teradata 也有类似的问题:

让 Teradata 查询在 Pyinstaller 生成的 .exe 上运行。我将引擎从 SQLAlchemy 更改为 Teradata

从 :

import sqlalchemy as sa
user, pasw, hostname = UserName,Password, 'myurl.com'
# connect
td_engine = sa.create_engine('teradata://{}:{}@{}:22/'.format(user,pasw,hostname),echo=True)
df = pd.read_sql_query(query1,connect)
Run Code Online (Sandbox Code Playgroud)

到:

import teradata
user, pasw, hostname = UserName,Password, 'myurl.com'
td = teradata.UdaExec (appName="test", version="1.0", logConsole=True)
td_engine = td.connect(method="odbc",system=hostname, username=user,password=pasw,driver="Teradata") 
Run Code Online (Sandbox Code Playgroud)

也许从 sqlalchemy 更改为 pyodbc 或其他连接选项。