Mysql
 sql >> Datenbank >  >> RDS >> Mysql

django+mysql='DatabaseWrapper'-Objekt hat kein Attribut 'Database'-Fehler

Ok, also ich hatte genau das gleiche Problem. Es gibt viele Vorschläge, wie Sie einen Teil bestehender Bibliotheken ändern können, damit Python3 mit MySQL funktioniert, aber ich habe keine gefunden, die zu 100% funktioniert. Ich war nicht in der Lage, den offiziellen MySQL-Python-Connector für die Arbeit mit Django und Python 3.3 zu erstellen.

Was funktionierte, war stattdessen der Wechsel zur PyMySQL-Bibliothek. Vor ein paar Monaten habe ich es schon probiert, aber damals hat es bei mir nicht funktioniert. Jetzt gibt es eine neue Version, 0.6.1, die sofort einsatzbereit war. Also, noch ein paar Details:

Meine Umgebung:OSX 10.9 , Python 3.3.3, Django 1.6.1, MyPySQL 0.6.1, MySQL Server 5.5 unter Windows

So funktioniert es:

  1. Installieren Sie die PyMySQL-Version 0.6.1 (https://github.com/PyMySQL/PyMySQL/ ). ):Sie können es entweder mit pip installieren, d. h.:pip install PyMySQL oder indem Sie das Paket manuell herunterladen; Es gibt eine gute Dokumentation auf ihrer Website, wie man das macht.

  2. Öffnen Sie Ihre Django-App __init__.py und fügen Sie die folgenden Zeilen ein:

    import pymysql
    pymysql.install_as_MySQLdb() 
    
  3. Öffnen Sie nun settings.py und stellen Sie sicher, dass Ihre DATABASE-Eigenschaft so aussieht:

    DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.mysql',
           'NAME': 'mydb',
           'USER': 'dbuser',
           'PASSWORD': 'dbpassword',
           'HOST': 'dbhost',
           'PORT': '3306'
        }
    }
    
  4. Das war's, Sie sollten in der Lage sein, python manage.py syncdb auszuführen so initieren Sie Ihre MySQL DB; siehe Beispielausgabe unten:

    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.
    ...