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

标签 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 文件或目录。我应该如何在 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 旨在用作 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

关于python - MySQLdb模块真实文件路径在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53040368/

相关文章:

python - 配置 conda 构建以从 conda 包输出中排除一些文件夹

python - Peewee CompressedField 在 MySQL 数据库上被截断

python - 如何限制Python中的列表以显示每个唯一行的N条记录?

python - 如何找到图像中物体的中心和角度?

python - 对输出文件进行 A-Z 排序

python - 为什么我的范围函数不从 'start' 值开始?

python - 如何将所有模块移动到新版本的 Python(从 3.6 到 3.7)

python - 在已安装的 Python 包中导入

python - 使用 pymysql (DictCursor) 获取数据

python - 无法将列表中的随机选择写入文本文件