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

时间:2018-10-29 07:06:07

标签: python python-module pymysql

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

2 个答案:

答案 0 :(得分:1)

MySQLdb导入可能来自其他软件包(与pip install mysqlclient一起安装)。

发行版pymysql旨在替代the original project,但出于礼貌,他们没有使用相同的导入名称。相反,they provide a convenience functionsys.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()