Python >> Tutoriel Python >  >> Python Tag >> MySQL

NameError :le nom '_mysql' n'est pas défini après la modification du paramètre mysql

Donc, je réponds à ma propre question. Étant donné que mon blog a une base de données, je lui ai donné un coup de feu pour faire un autre projet sans db, recommencer à zéro.

Ce que j'ai remarqué, c'est qu'il y a un problème d'importation de MySQLdb module (sous-module de mysqlclient) avec ce traceback :Library not loaded: @rpath/libmysqlclient.21.dylib .

Après quelques heures de navigation, j'ai réalisé que, pour une raison quelconque, les paramètres de sécurité du Mac empêchent l'importation correcte.

Le mysqlclient bibliothèque github J'ai trouvé un problème qui signale le même que le mien. Il suggère que j'exécute cp -r /usr/local/mysql/lib/* /usr/local/lib/ . Après cela, j'ai défini settings.py pour mysql, exécuté python manage.py migrate et cela a fonctionné. Donc, pour une base de données vide, cela pourrait être une solution. J'ai toujours du mal avec la base de données 1.

J'utilise

  • MacOS Catalina 10.15.6
  • pyenv

Donc, comme réponse complète :

Si vous utilisez le package python mysqlclient, vous devez toujours installer le client mysql à partir d'Oracle/MySQL. Celui-ci contient la bibliothèque C utilisée par le package python. Pour rendre les choses plus confuses :le package python est en fait écrit en C pour augmenter la vitesse. Pour installer cette bibliothèque sur MacOS :

% brew install mysql-client

Il existe également un package python pur, avec une licence MIT plus attrayante, qui peut être une solution si votre entreprise ou votre client n'autorise pas la GPL. Cependant, il n'est pas officiellement pris en charge et certains bugs subtils peuvent survenir entre les versions. YMMV.


cela a fonctionné pour moi :

ajoutez ceci à PATH :

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$PATH"