【问题标题】: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

【问题讨论】:

标签: python mysql django


【解决方案1】:

是的,当然。你需要安装'mysqlclient'包或'mysql-connector-python'包,带有pip。

【讨论】:

    【解决方案2】:

    是的,您必须再次在虚拟环境中重新安装 mysql for django。对于 Windows,您可以执行以下操作:-

    pip install django mysqlclient

    【讨论】:

      【解决方案3】:

      我猜你没有在虚拟环境中安装mysqlclient python 库。

      由于您使用的是Windows,您需要从here下载并安装mysqlclient python 库

      【讨论】:

        【解决方案4】:

        PyMySQLMySQLdb 都是数据库连接器。我假设您的 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.pywsgi.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)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-20
            • 2021-06-27
            • 2019-03-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多