Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

django+mysql='DatabaseWrapper' objeto não tem erro de atributo 'Database'


Ok, então eu estava enfrentando exatamente o mesmo problema. Existem muitas sugestões sobre como você pode modificar parte das bibliotecas existentes para fazer o Python3 funcionar com o MySQL, mas não encontrei nenhuma delas funcionando 100%. Não consegui fazer o conector MySQL Python oficial para funcionar com Django e Python 3.3.

O que funcionou foi mudar para a biblioteca PyMySQL. Alguns meses atrás eu já tentei, mas não funcionou para mim naquela época. Agora, há uma nova versão, 0.6.1, que funcionou imediatamente. Então, mais alguns detalhes:

Meu ambiente:OSX 10.9 , Python 3.3.3, Django 1.6.1, MyPySQL 0.6.1, MySQL Server 5.5 no Windows

Como fazer isso funcionar:


  1. Instale o PyMySQL versão 0.6.1 (https://github.com/PyMySQL/PyMySQL/ ):você pode instalá-lo usando pip, ou seja:pip install PyMySQL ou baixando manualmente o pacote; há uma boa documentação em seu site sobre como fazer isso.

  2. Abra seu aplicativo Django __init__.py e cole as seguintes linhas:
    import pymysql
    pymysql.install_as_MySQLdb() 
    

  3. Agora, abra settings.py e certifique-se de que sua propriedade DATABASE esteja assim:
    DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.mysql',
           'NAME': 'mydb',
           'USER': 'dbuser',
           'PASSWORD': 'dbpassword',
           'HOST': 'dbhost',
           'PORT': '3306'
        }
    }
    

  4. É isso, você deve ser capaz de executar python manage.py syncdb então inicialize seu banco de dados MySQL; veja o exemplo de saída abaixo:
    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.
    ...