In [29]: import MySQLdb
In [31]: MySQLdb
Out[31]: <module 'pymysql' from 'G:\\QGB\\Anaconda3\\lib\\site-packages\\pymysql\\__init__.py'>
为什么MySQLdb不存在,为什么我可以导入它?
我想知道为什么sys.path中没有“ MySQLdb” python文件或dir。我应该如何在Python中导入“ MySQLdb”?
在Django VERSION =(2,1,1,'final',0),
\ Lib \ site-packages \ django \ db \ backends \ mysql \ base.py第15行。
import MySQLdb as Database
答案 0 :(得分:1)
MySQLdb
导入可能来自其他软件包(与pip install mysqlclient
一起安装)。
发行版pymysql
旨在替代the original project,但出于礼貌,他们没有使用相同的导入名称。相反,they provide a convenience function在sys.modules
中使用相同的名称。这样,import MySQLdb
将不会尝试再次遍历sys.path
,而是重新使用已经加载的pymysql
模块:
>>> import pymysql
>>> pymysql.install_as_MySQLdb??
Signature: pymysql.install_as_MySQLdb()
Source:
def install_as_MySQLdb():
"""
After this function is called, any application that imports MySQLdb or
_mysql will unwittingly actually use pymysql.
"""
sys.modules["MySQLdb"] = sys.modules["_mysql"] = sys.modules["pymysql"]
File: ~/.venv/lib/python3.7/site-packages/pymysql/__init__.py
Type: function
答案 1 :(得分:0)
原因是:
在您项目的某处
import pymysql
pymysql.install_as_MySQLdb()