当我的机器中已经有 MySQL 时,是不是还需要在 Django 虚拟环境中安装 MySQL?
Posted
技术标签:
【中文标题】当我的机器中已经有 MySQL 时,是不是还需要在 Django 虚拟环境中安装 MySQL?【英文标题】:Do I still need to install MySQL in Django virtual env while I already have MySQL in my machine?当我的机器中已经有 MySQL 时,是否还需要在 Django 虚拟环境中安装 MySQL? 【发布时间】:2019-10-13 13:40:15 【问题描述】:我已经在我的 windows 10 机器上安装了 mysql 5.1,我可以通过以下方式从 python 连接 mysql:
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='MYSQLTB',db='shfuture')
然后我下载django框架并尝试使用它来连接mysql,我所做的是:
创建一个my.cnf文件内容是:
[client]
database = shfuture
host = localhost
user = root
password = MYSQLTB
default-character-set = utf8
将 settings.py 更改为:
DATABASES =
'default':
'ENGINE': 'django.db.backends.mysql',
'OPTIONS':
'read_default_file': os.path.join(BASE_DIR, 'my.cnf'),
,
然后运行:
python manage.py runserver
但出现错误:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install the MySQL client?
我还需要在 Django 虚拟环境中安装额外的 MySQL 吗?如果我可以改用现有的 MySQL
【问题讨论】:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb的可能重复 您需要安装客户端库才能访问 MySQL 服务器,而不是 MySQL 服务器本身。您的问题无法区分它们。 【参考方案1】:是的,当然。你需要安装'mysqlclient'包或'mysql-connector-python'包,带有pip。
【讨论】:
【参考方案2】:是的,您必须再次在虚拟环境中重新安装 mysql for django。对于 Windows,您可以执行以下操作:-
pip install django mysqlclient
【讨论】:
【参考方案3】:我猜你没有在虚拟环境中安装mysqlclient
python 库。
由于您使用的是Windows,您需要从here下载并安装mysqlclient
python 库
【讨论】:
【参考方案4】:PyMySQL 和 MySQLdb 都是数据库连接器。我假设您的 django 框架默认搜索 MySQLdb 并抛出异常,因为它找不到。
您可以安装 MySQLdb 或按照@ruddra 的回答。我建议您在开发机器的情况下使用@ruddra 的答案。因为在安装和使 MySQLdb 正常工作时,您可能会遇到很多问题(50/50 的机会)。
阅读What is PyMySQL and how does it differ from MySQLdb? Can it affect Django deployment?以了解更多信息。
【讨论】:
【参考方案5】:基本上你需要将以下代码放在manage.py
和wsgi.py
之上,如下所示:
#!/usr/bin/env python
import os
import sys
import pymysql
pymysql.install_as_MySQLdb()
# rest of the code
您还需要确保在虚拟环境中安装了pymysql
。
仅供参考:在 django>=2.2 中使用 pymysql 可能无法正常工作。你会找到一些可能有效的解决方案,就像this ticket
中提到的那样。另外,django 官方不支持 pymysql 作为 mysql 连接器(票证#12500
,#22391
)。
【讨论】:
以上是关于当我的机器中已经有 MySQL 时,是不是还需要在 Django 虚拟环境中安装 MySQL?的主要内容,如果未能解决你的问题,请参考以下文章
当我的角度应用程序中已经存在身份验证时,是不是需要在 Web API 中进行身份验证
当我在查询中使用“GROUP_CONCAT”和“HAVING”时如何计算 MySQL 结果?