JupyterLab使用SQLAlchemy访问MySQL时出现以下错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) Cell In[7], line 2 1 from sqlalchemy import create_engine ----> 2 engine = create_engine("mysql://scrat:scrat%40123@127.0.0.1/scrat")
File <string>:2, in create_engine(url, **kwargs)
File ~/frin/python/venvs/jupyter/lib/python3.12/site-packages/sqlalchemy/util/deprecations.py:281, in deprecated_params.<locals>.decorate.<locals>.warned(fn, *args, **kwargs) 274 if m in kwargs: 275 _warn_with_version( 276 messages[m], 277 versions[m], 278 version_warnings[m], 279 stacklevel=3, 280 ) --> 281 return fn(*args, **kwargs)
File ~/frin/python/venvs/jupyter/lib/python3.12/site-packages/sqlalchemy/engine/create.py:599, in create_engine(url, **kwargs) 597 if k in kwargs: 598 dbapi_args[k] = pop_kwarg(k) --> 599 dbapi = dbapi_meth(**dbapi_args) 601 dialect_args["dbapi"] = dbapi 603 dialect_args.setdefault("compiler_linting", compiler.NO_LINTING)
File ~/frin/python/venvs/jupyter/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/mysqldb.py:147, in MySQLDialect_mysqldb.import_dbapi(cls) 145 @classmethod 146 def import_dbapi(cls): --> 147 return __import__("MySQLdb")
ModuleNotFoundError: No module named 'MySQLdb'
|
这是因为SQLAlchemy连接MySQL默认驱动是MySQLdb,MySQLdb仅支持Python2,不支持Python3。如果使用Python3,可以安装pymysql库,并将连接串改为mysql+pymysql://scrat:scrat%40123@127.0.0.1/scrat就好了。