无法加载插件:sqlalchemy.dialects:mysql.pymysql

问题描述 投票:0回答:4

我尝试使用 sqlAlchemy 连接到我的数据库并收到错误

Can't load plugin: sqlalchemy.dialects:mysql.pymysql
。该脚本之前有效,我没有更改任何内容,但我无法连接到数据库。

我正在导入库:

#from sqlalchemy import *
from sqlalchemy import create_engine, Table, Column, Integer, String, DateTime, Float, MetaData
from sqlalchemy.engine import create_engine
from sqlalchemy.schema import *
from pybigquery.api import ApiClient

我的联系方式:

# Database parameter
host = "127.0.0.1"         
user = "someUser"          
passwd = "somePassword"    
database = "ucb-pvapp"     

# Database connection
db=pymysql.connect(
        host=host,
        user=user,
        passwd=passwd,
        db=database,
        autocommit=True)

engine = create_engine(f'mysql+pymysql://{user}:{passwd}@{host}/{database}')
cursor=db.cursor()

sqlAlchemy 和 pymysql 已安装。

使用Ubuntu 20.04、python 3.8.5和sqlalchemy版本1.3.12。 完整回溯:

Traceback (most recent call last):
  File "pv.py", line 131, in <module>
    engine = create_engine(f'mysql+pymysql://{user}:{passwd}@{host}/{database}')
  File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/__init__.py", line 500, in create_engine
    return strategy.create(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/strategies.py", line 61, in create
    entrypoint = u._get_entrypoint()
  File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/url.py", line 172, in _get_entrypoint
    cls = registry.load(name)
  File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/langhelpers.py", line 268, in load
    raise exc.NoSuchModuleError(
sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:mysql.pymysql
python python-3.x sqlalchemy
4个回答
3
投票

删除

pymysql
并重新安装即可解决问题。


2
投票

您好,我也遇到了同样的问题,我尝试卸载 pymysql 并重新安装,但没有成功。然而,添加一个简单的

import pymysql
语句解决了我的问题。


0
投票

您确定需要这样做吗

from sqlalchemy import *
? 您需要更具体:

  • 您使用的是哪个 python 和 sqlalchemy 版本?

0
投票

我在连接数据库时也遇到问题,但是在使用最近的

langchain
导入上述库时,我能够连接。 我正在使用 langchain 连接到我的本地数据库。

  • 我的工作台是
    MySql

from langchain.utilities import SQLDatabase

cs  = "mysql+pymysql://root:admin@localhost/your_database_name"
db_engine = create_engine(cs)
db = SQLDatabase(db_engine)
print(db.get_table_names())

  • 这对我有用。最初我的密码有问题,所以我将其更改为默认管理员。
  • 现在我可以打印数据库中的结果了。
© www.soinside.com 2019 - 2024. All rights reserved.