Estou executando um código de teste com um banco de dados MySQL usando SQLAlchemy. Não consigo conectar ao servidor usando a URL do banco de dados 'mysql://poopoo:peepee@localhost:32913/test'
, pois ele me recusa a autenticação.
Quando tento conectar ao banco de dados usando o DBeaver, recebo um erro informando que "Recuperação de chave pública não é permitida". Isso me levou a esta postagem , sugerindo que eu adicione ?allowPublicKeyRetrieval=true&useSSL=false
ao final da URL. Posso confirmar que esse método funciona no DBeaver.
No entanto, ao adicioná-los à URL, seja em uma string ou com connect_args
, um comando TypeError
é gerado, informando-me que esses são argumentos de palavra-chave inválidos para connect.
Como adiciono essas opções à minha conexão SQLAlchemy?
Estou usando testcontainers
para gerar o servidor de teste MySQL , mas não acho que isso seja relevante.
Para corrigir esse problema com SQLAlchemy, você precisa usar a sintaxe correta do driver. Para conexões MySQL com recuperação de chave pública, use
mysql+pymysql://
em vez demysql://
e adicione os parâmetros à string de consulta:Se ainda estiver recebendo erros, você também pode tentar passar esses parâmetros
connect_args
com o formato correto:Certifique-se de ter o driver pymysql instalado:
pip install pymysql
.