Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django: how to install mysql/connector python with pip3

I am working on projects based on Django 1.7 and Python 3.4. However, I had problems installing MySQL/Connector Python with pip3.

According to this document, MySQL/Connector Python supports Python 3. I used to install MySQL-python in Python with command pip install MySQL-python.

This download page only provides .deb files for installation on Ubuntu (btw, the installation also has conflict problems)

I tried to install with:

pip3 install mysql-connector-python --allow-external mysql-connector-python

No error messages. But when I run the Django app, I got the following error message:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'

Question: So, how do I install MySQL/Connector Python into a virtual environment with pip3? Or is it supposed to be installed into the system, instead of a virtual environment?

like image 568
Randy Tang Avatar asked Oct 26 '14 14:10

Randy Tang


2 Answers

If you read the documentation, you will see that the native MySQLdb driver doesn't support Python 3. You have two options:

A mysqldb fork

There is a fork that supports Python 3. Read its Github repo to know how to install with your system. For Ubuntu do apt-get install python-mysqldb

MySQL connector

Install from venv as you did with pip install mysql-connector-python --allow-external mysql-connector-python. Then read their documentation for Django and modify your settings.py file to have it like:

DATABASES = {
    'default': {
        'NAME': 'user_data',
        'ENGINE': 'mysql.connector.django',
        'USER': 'mysql_user',
        'PASSWORD': 'priv4te',
        'OPTIONS': {
          'autocommit': True,
        },
    }
}

Pay attention to the connector value mysql.connector.django :-)

like image 68
Lucio Avatar answered Sep 21 '22 23:09

Lucio


The version of mysql-connector that pip installs doesn't work with Django 1.8. There is a fixed version on github. The command to install from there is

pip install --allow-all-external git+git://github.com/multiplay/mysql-connector-python

That one works with Django 1.8.

like image 25
Sean Avatar answered Sep 19 '22 23:09

Sean