Como fazer o Django trabalhar com drivers MySQL não suportados, como Gevent-Mysql ou Driver MySQL da Concurrence?
-
26-09-2019 - |
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.
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:
- Comente o bloco de tentativa de exceção no início do base.py Arquivo, onde o MySQLDB é importado.
Adicione as quatro linhas a seguir para base.py
try: import pymysql as Database except ImportError: pass
Como mencionado no link que Egbutter Postado, vá para o arquivo base.py e encontre-replace
MySQLdb
compymysql
Nas partes relevantes do arquivo, ou seja, não se preocupe em alterar as mensagens de erro (você pode, mas isso depende de você).Salve base.py e execute o seguinte comando do local APT para ver o servidor inicializar.
python manage.py runserver