Python ModuleNotFoundError:没有名为';MySQLdb';亚马逊炼金术
我在连接Amazon AWS MySQL和SQLAlchemy时遇到问题。根据指示,我已连接Python ModuleNotFoundError:没有名为';MySQLdb';亚马逊炼金术,python,amazon-web-services,sqlalchemy,mysql-python,Python,Amazon Web Services,Sqlalchemy,Mysql Python,我在连接Amazon AWS MySQL和SQLAlchemy时遇到问题。根据指示,我已连接 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://<user>:<password>@<host>/<dbname> app.config['SQLALCHEMY\u DATABASE\u URI']='mysql://:@/ 但有一个错误: Traceback (most recent call las
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://<user>:<password>@<host>/<dbname>
app.config['SQLALCHEMY\u DATABASE\u URI']='mysql://:@/
但有一个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ec2-user/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 514, in __get__
return type.query_class(mapper, session=self.sa.session())
File "/home/ec2-user/venv/lib/python3.7/site-packages/sqlalchemy/orm/scoping.py", line 74, in __call__
return self.registry()
File "/home/ec2-user/venv/lib/python3.7/site-packages/sqlalchemy/util/_collections.py", line 1001, in __call__
return self.registry.setdefault(key, self.createfunc())
File "/home/ec2-user/venv/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 2950, in __call__
return self.class_(**local_kw)
File "/home/ec2-user/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 143, in __init__
bind = options.pop('bind', None) or db.engine
File "/home/ec2-user/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 877, in engine
return self.get_engine()
File "/home/ec2-user/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 896, in get_engine
return connector.get_engine()
File "/home/ec2-user/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 559, in get_engine
self._engine = rv = sqlalchemy.create_engine(info, **options)
File "/home/ec2-user/venv/lib/python3.7/site-packages/sqlalchemy/engine/__init__.py", line 424, in create_engine
return strategy.create(*args, **kwargs)
File "/home/ec2-user/venv/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 81, in create
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/home/ec2-user/venv/lib/python3.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 102, in dbapi
return __import__('MySQLdb')
ModuleNotFoundError: No module named 'MySQLdb'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/ec2 user/venv/lib/python3.7/site packages/flask\u sqlalchemy/\uuuuuuuu init\uuuuuuuuuuu.py”,第514行,在__
返回类型.query\u类(映射器,session=self.sa.session())
文件“/home/ec2 user/venv/lib/python3.7/site packages/sqlalchemy/orm/scoping.py”,第74行,在调用中__
返回self.registry()
文件“/home/ec2 user/venv/lib/python3.7/site packages/sqlalchemy/util/_collections.py”,第1001行,在u调用中__
返回self.registry.setdefault(项,self.createfunc())
文件“/home/ec2 user/venv/lib/python3.7/site packages/sqlalchemy/orm/session.py”,第2950行,在调用中__
返回自功率等级(**本地功率)
文件“/home/ec2 user/venv/lib/python3.7/site-packages/flask\u-sqlalchemy/\uuuuuuu-init\uuuuuu.py”,第143行,in\uuu-init__
bind=options.pop('bind',None)或db.engine
文件“/home/ec2 user/venv/lib/python3.7/site packages/flask_sqlalchemy/_init__.py”,第877行,在引擎中
返回self.get_引擎()
get_引擎中的文件“/home/ec2 user/venv/lib/python3.7/site packages/flask\u sqlalchemy/\u_init\u_uuu.py”,第896行
返回连接器。获取引擎()
get_引擎中的文件“/home/ec2 user/venv/lib/python3.7/site packages/flask\u sqlalchemy/\u_init\u_uu.py”,第559行
self.\u engine=rv=sqlalchemy.create\u engine(信息,**选项)
文件“/home/ec2 user/venv/lib/python3.7/site packages/sqlalchemy/engine/__init__;.py”,第424行,在create_引擎中
返回策略。创建(*args,**kwargs)
文件“/home/ec2 user/venv/lib/python3.7/site packages/sqlalchemy/engine/strategies.py”,第81行,在create中
dbapi=方言\ cls.dbapi(**dbapi\参数)
dbapi中的文件“/home/ec2 user/venv/lib/python3.7/site packages/sqlalchemy/dialogs/mysql/mysqldb.py”,第102行
返回uuu导入uuu('MySQLdb'))
ModuleNotFoundError:没有名为“MySQLdb”的模块
我使用的是Python3.7版本。即使根据stackoverflow,我已经安装了pymysql,但仍然面临这个问题
感谢您的回复。如果您使用PyMySQL客户端连接到MySQL,您的SQLAlchemy连接字符串需要以
mysql+pymysql://
而不是mysql://
如果您连接到mysql://,则需要安装MySQLdb库,如回溯中所示。步骤1
如果要使用MySQLDB,需要使用以下命令之一。哪一个取决于您拥有和使用的操作系统和软件
轻松安装mysql python
(混合操作系统)
pip安装mysql-python
(混合操作系统/python2)
pip安装mysqlclient
(混合os/python 3)
apt get install python mysqldb
(Linux Ubuntu,…)
cd/usr/ports/databases/py MySQLdb&&make-install-clean
(FreeBSD)
yum安装MySQL-python
(Linux Fedora、CentOS…)
对于Windows,请参见以下答案:
第二步:
engine=create\u engine('mysql+mysqldb://...,池_recycle=3600)
使用create\u engine.pool\u recycle
选项,该选项可确保连接在池中已存在固定秒数时将被丢弃并替换为新连接:
conn=engine.connect()
conn.execute(“从表中选择*”)
以上问题已通过以下方式解决:
import pymysql
pymysql.install_as_MySQLdb()
任何地方都无需更改。以上问题已经解决:导入pymysql pymysql.install_as_MySQLdb()谢谢大家的建议。没有任何改变可以解决这个问题,但是有人会对发生的事情做一些解释吗?(我想问一个问题,但我还不确定问题是什么。)