MySQL 连接器/python 在 django 中不起作用

Posted

技术标签:

【中文标题】MySQL 连接器/python 在 django 中不起作用【英文标题】:MySQL Connector/python not working in django 【发布时间】:2014-11-17 17:34:41 【问题描述】:

我正在学习使用 mysql 作为后端的 Django。我安装了 Oracle 的 mysql 连接器来连接 mysql。但是,当我运行 python manage.py 时,我得到了这个错误

Traceback(最近一次调用最后一次): 文件“C:\Python33\lib\site-packages\django\db\backends\mysql\base.py”,第 14 行,在 导入 MySQLdb 作为数据库 ImportError:没有名为“MySQLdb”的模块

这有点奇怪。我在想如果我安装了 mysql 连接器/python,我就不再需要 MySQLdb。

谁能帮忙解释一下?谢谢!

我的数据库设置:

DATABASES = 
'default': 
    'ENGINE': 'django.db.backends.mysql',
    'NAME': "djangolearn",
    'USER': 'root',
    'PASSWORD': '',
    'HOST': '127.0.0.1',
    'PORT': '3306',

【问题讨论】:

【参考方案1】:

为在 django 中工作的 MySQL 连接器 试试这个:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangolearn',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    

或尝试在 django 中工作的 MySQL 连接器池

DATABASES = 
    'default': 
        'ENGINE': 'PyMysqlPool.mysql.connector.django',
        'NAME': 'djangolearn',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': 
            'autocommit': True,
            'pool': 
                #use = 0 no pool else use pool
                "use":0,
                # size is >=0,  0 is dynamic pool
                "size":10,
                #pool name
                "name":"local",
            
        ,
    

【讨论】:

【参考方案2】:
# for mysql connector use this

DATABASES = 
'default': 
    'ENGINE': 'mysql.connector.django',
    'NAME': 'dbname',               
    'USER': 'user',
    'PASSWORD': '',
    'HOST': '127.0.0.1',
    'PORT': '3306',
,

【讨论】:

mysql-connector-python,从 8.0.13 版本开始,有一个 bug,导致无法与 Django 一起使用:code.djangoproject.com/ticket/30469bugs.mysql.com/bug.php?id=92001 为了避免这个 bug,添加选项 'use_pure': True在数据库选项中。【参考方案3】:

试试:pip install mysql-python

如果这不起作用:确保您可以连接到您的数据库(使用 phpmyadmin 或 mysql 工作台进行测试)

【讨论】:

【参考方案4】:

如果您使用 Oracle 的连接器,则需要使用他们的 Django db 后端。

见their documentation。

【讨论】:

谢谢!我也刚看到。

以上是关于MySQL 连接器/python 在 django 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

python测试开发django-10.django连接mysql

python3使用Django框架连接mysql(python3+Django+MySQL+pymysql)

python3下django连接mysql数据库

Python(Django) 连接MySQL(Mac环境)

python3 django连接mysql,同步表结构

Python 3.3 + Django 1.6 + 连接器/Python Django 后端 + South