Ok, så jeg oplevede præcis det samme problem. Der er masser af forslag til, hvordan du kan ændre en del af eksisterende biblioteker for at få Python3 til at fungere med MySQL, men jeg fandt ikke, at nogen af dem virkede 100%. Jeg var ikke i stand til at få den officielle MySQL Python-forbindelse til at fungere med Django og Python 3.3.
Det, der virkede, var at skifte til PyMySQL-biblioteket i stedet for. For nogle måneder siden prøvede jeg det allerede, men det virkede ikke for mig dengang. Nu er der en ny version, 0.6.1, som fungerede ud af boksen. Så lidt flere detaljer:
Mit miljø:OSX 10.9, Python 3.3.3, Django 1.6.1, MyPySQL 0.6.1, MySQL Server 5.5 på Windows
Sådan får du det til at fungere:
-
Installer PyMySQL version 0.6.1 (https://github.com/PyMySQL/PyMySQL/ ):du kan installere det enten ved at bruge pip, dvs. :
pip install PyMySQL
eller ved manuelt at downloade pakken; der er en god dokumentation på deres hjemmeside om, hvordan man gør det. -
Åbn din Django-app __init__.py og indsæt følgende linjer:
import pymysql pymysql.install_as_MySQLdb()
-
Åbn nu settings.py og sørg for, at din DATABASE-ejendom ser sådan ud:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydb', 'USER': 'dbuser', 'PASSWORD': 'dbpassword', 'HOST': 'dbhost', 'PORT': '3306' } }
-
Det er det, du burde være i stand til at udføre
python manage.py syncdb
så init din MySQL DB; se eksempeloutputtet nedenfor:Creating tables ... Creating table django_admin_log Creating table auth_permission Creating table auth_group_permissions ... ... Creating table socialaccount_socialtoken You just installed Django's auth system, which means you don't have any superusers defined. ...