MySQLdb模块的真实文件路径在哪里


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文件或目录。我应该如何在python中导入"MySQLdb"?

在Django VERSION=(2,1,1,'final',0(中,
\Lib\site-packages\Django\db\backends\mysql\base.py第15行。

import MySQLdb as Database

MySQLdb导入可能来自不同的包(与pip install mysqlclient一起安装(。

分发版pymysql旨在作为原始项目的替代品,但出于礼貌,它们没有采用相同的导入名称。相反,它们提供了一个方便的函数,在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

原因是:

在你的项目中的某个地方

import pymysql
pymysql.install_as_MySQLdb()

相关内容

  • 没有找到相关文章

最新更新