Mysql
 sql >> Base de données >  >> RDS >> Mysql

django+mysql='l'objet 'DatabaseWrapper' n'a pas d'erreur d'attribut 'Database'

Ok, donc je rencontrais exactement le même problème. Il existe de nombreuses suggestions sur la façon dont vous pouvez modifier une partie des bibliothèques existantes pour que Python3 fonctionne avec MySQL, mais je n'en ai trouvé aucune qui fonctionne à 100%. Je n'ai pas pu faire en sorte que le connecteur Python MySQL officiel fonctionne avec Django et Python 3.3.

Ce qui a fonctionné a été de passer à la bibliothèque PyMySQL à la place. Il y a quelques mois, je l'ai déjà essayé mais cela n'a pas fonctionné pour moi à l'époque. Maintenant, il existe une nouvelle version, la 0.6.1, qui a fonctionné dès le départ. Alors, quelques détails supplémentaires :

Mon environnement :OSX 10.9 , Python 3.3.3, Django 1.6.1, MyPySQL 0.6.1, MySQL Server 5.5 sous Windows

Comment le faire fonctionner :

  1. Installez PyMySQL version 0.6.1 (https://github.com/PyMySQL/PyMySQL/ ) :vous pouvez l'installer soit en utilisant pip, c'est-à-dire :pip install PyMySQL ou en téléchargeant manuellement le package ; il y a une bonne documentation sur leur site Web sur la façon de le faire.

  2. Ouvrez votre application Django __init__.py et collez les lignes suivantes :

    import pymysql
    pymysql.install_as_MySQLdb() 
    
  3. Maintenant, ouvrez settings.py et assurez-vous que votre propriété DATABASE ressemble à ceci :

    DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.mysql',
           'NAME': 'mydb',
           'USER': 'dbuser',
           'PASSWORD': 'dbpassword',
           'HOST': 'dbhost',
           'PORT': '3306'
        }
    }
    
  4. Voilà, vous devriez pouvoir exécuter python manage.py syncdb alors initialisez votre base de données MySQL ; voir l'exemple de sortie ci-dessous :

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