Mysql
 sql >> Database >  >> RDS >> Mysql

django+mysql=L'oggetto 'DatabaseWrapper' non ha un errore di attributo 'Database'

Ok, quindi stavo riscontrando esattamente lo stesso problema. Ci sono molti suggerimenti su come modificare parte delle librerie esistenti per far funzionare Python3 con MySQL, ma non ne ho trovati nessuno che funzioni al 100%. Non sono stato in grado di rendere il connettore MySQL Python ufficiale per funzionare con Django e Python 3.3.

Ciò che ha funzionato è stato invece passare alla libreria PyMySQL. Qualche mese fa l'avevo già provato ma allora non funzionava. Ora, c'è una nuova versione, 0.6.1 che ha funzionato immediatamente. Quindi, qualche dettaglio in più:

Il mio ambiente:OSX 10.9, Python 3.3.3, Django 1.6.1, MyPySQL 0.6.1, MySQL Server 5.5 su Windows

Come farlo funzionare:

  1. Installa PyMySQL versione 0.6.1 (https://github.com/PyMySQL/PyMySQL/ ):puoi installarlo sia usando pip, cioè :pip install PyMySQL oppure scaricando manualmente il pacchetto; c'è una buona documentazione sul loro sito web su come farlo.

  2. Apri la tua app Django __init__.py e incolla le seguenti righe:

    import pymysql
    pymysql.install_as_MySQLdb() 
    
  3. Ora apri impostazioni.py e assicurati che la tua proprietà DATABASE assomigli a questa:

    DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.mysql',
           'NAME': 'mydb',
           'USER': 'dbuser',
           'PASSWORD': 'dbpassword',
           'HOST': 'dbhost',
           'PORT': '3306'
        }
    }
    
  4. Ecco fatto, dovresti essere in grado di eseguire python manage.py syncdb quindi avvia il tuo DB MySQL; vedere l'output di esempio di seguito:

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