Como fazer o Django trabalhar com drivers MySQL não suportados, como Gevent-Mysql ou Driver MySQL da Concurrence?

StackOverflow https://stackoverflow.com/questions/2636536

Pergunta

Estou interessado em executar o Django em uma estrutura assíncrona como Concorrência ou Gevent. Ambas as estruturas vêm com seu próprio driver assíncrono mysql.

O problema é que o Django só apóia oficialmente o MySqldb. O que eu preciso fazer para fazer o Django trabalhar com os drivers MySQL que vêm com Gevent ou concordância?

Existe um guia passo a passo em algum lugar que eu possa seguir? Este é um grande empreendimento?

Obrigado.

Foi útil?

Solução

três aplausos pela sugestão de @TraViscline para ir com pymysql. Sua sugestão foi baseada em Este post de Mozilla. Tudo o que é preciso é um Patch simples para o seu arquivo gerencial.py

#!/usr/bin/env python
+try:
+    import pymysql
+    pymysql.install_as_MySQLdb()
+except ImportError:
+    pass 

Alterar a importação no seu arquivo de configurações e Monkeypatch (), pois o pymysql é um driver python puro.

Travis mencionou que ele testa a compatibilidade alterando as importações e executando os unitests para pymysql, mysqldb e myconnpy.

Observe que já existem Exemplos de detalhes mais refinados a serem observados - Mas, no geral, esta é uma solução elegante e sustentável. Vou atualizar quando eu for executado em produção!

Outras dicas

Consegui fazer com que o PymySQL trabalhe com Django fazendo o seguinte:

  1. Comente o bloco de tentativa de exceção no início do base.py Arquivo, onde o MySQLDB é importado.
  2. Adicione as quatro linhas a seguir para base.py

    try:
        import pymysql as Database
    except ImportError:
        pass
    
  3. Como mencionado no link que Egbutter Postado, vá para o arquivo base.py e encontre-replace MySQLdb com pymysql Nas partes relevantes do arquivo, ou seja, não se preocupe em alterar as mensagens de erro (você pode, mas isso depende de você).

  4. Salve base.py e execute o seguinte comando do local APT para ver o servidor inicializar.

    python manage.py runserver
    
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top