162 votes

Comment puis-je me connecter à MySQL en Python 3 sur Windows?

Je suis en train d'utiliser Python 3 d'ActiveState sur Windows et je voulais me connecter à ma base de données MySQL. J'ai entendu dire que mysqldb était le module à utiliser. Je ne trouve pas mysqldb pour Python 3.

Y a-t-il un dépôt disponible où les binaires existent pour mysqldb? Comment puis-je me connecter à MySQL en Python 3 sous Windows?

0 votes

Merci à casevh pour le lien vers les binaires non officiels, mais j'étais trop impatient et il semble que les masses utilisent encore python2 ... donc j'ai installé python 2.7 et j'ai installé MySQLdb depuis codegood.com/archives/129

1 votes

Possible duplicate of MySQL-db lib pour Python 3.0 ?

1 votes

Chaque fois que je tape "pip", mon estomac se retourne. 7 ans et toujours.

296voto

Collin Anderson Points 952

Il existe actuellement quelques options pour utiliser Python 3 avec mysql :

https://pypi.python.org/pypi/mysql-connector-python

  • Pris en charge officiellement par Oracle
  • Python pur
  • Un peu lent
  • Non compatible avec MySQLdb

https://pypi.python.org/pypi/pymysql

  • Python pur
  • Plus rapide que mysql-connector
  • Presque entièrement compatible avec MySQLdb, après avoir appelé pymysql.install_as_MySQLdb()

https://pypi.python.org/pypi/cymysql

  • Une version modifiée de pymysql avec des accélérations C optionnelles

https://pypi.python.org/pypi/mysqlclient

  • Bibliothèque recommandée par Django.
  • Version optimisée de MySQLdb d'origine, espère fusionner un jour
  • L'implémentation la plus rapide, car elle est basée sur C.
  • La plus compatible avec MySQLdb, car c'est une version modifiée
  • Debian et Ubuntu l'utilisent pour fournir les packages python-mysqldb et python3-mysqldb.

Résultats des tests de performances ici : https://github.com/methane/mysql-driver-benchmarks

73voto

Oleh Prypin Points 9086

Vous devriez probablement utiliser pymysql - Client MySQL Pure Python à la place.
Il fonctionne avec Python 3.x, et n'a pas de dépendances.

Ce client MySQL pur Python fournit une DB-API à une base de données MySQL en dialoguant directement avec le serveur via le protocole client/serveur binaire.

Exemple :

import pymysql
conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd=None, db='mysql')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
for r in cur:
    print(r)
cur.close()
conn.close()

15 votes

Malheureusement, c'est une bibliothèque NON documentée qui se contente de ne pas fonctionner

7 votes

@Lohoris: Comment se fait-il que je l'utilise sans problème?

0 votes

Je n'ai pas pu installer cela sur Windows 7 avec Python 3.x. Quelqu'un sait comment faire?

11voto

Dimple Points 141

Si vous voulez utiliser MySQLdb, vous devez d'abord installer pymysql sur votre PC en tapant dans l'invite de commandes de Windows

pip install pymysql

ensuite, dans la console Python, tapez

import pymysql
pymysql.install_as_MySQLdb()
import MySQLdb
db = MySQLdb.connect("localhost", "root", "password")

cela établira la connexion.

7voto

Bogd Points 86

J'ai également essayé d'utiliser pymysql (sur mon machine Win7 x64, Python 3.3), sans trop de succès. J'ai téléchargé le .tar.gz, extrait, exécuté "setup.py install", et tout semblait bien fonctionner. Jusqu'à ce que j'essaie de me connecter à une base de données, et obtienne "KeyError [56]". Une erreur que je n'ai pas réussi à trouver documentée nulle part.

Alors j'ai abandonné pymysql, et je me suis tourné vers le connecteur Oracle MySQL.

Il est proposé sous forme de package d'installation, et fonctionne directement. De plus, il semble également être correctement documenté.

6voto

S Rahul Bose Points 117

Résumé

Mysqlclient est la meilleure alternative (IMHO) car elle fonctionne parfaitement avec Python 3+, suit les conventions attendues (contrairement au connecteur mysql), utilise le nom d'objet mysqldb qui permet un portage pratique du logiciel existant et est utilisé par Django pour les constructions Python 3

Existe-t-il un référentiel où les binaires de mysqldb existent?

Oui. mysqlclient vous permet d'utiliser les fonctions mysqldb. Cependant, rappelez-vous que ce n'est pas un port direct de mysqldb, mais une construction par mysqlclient

Comment puis-je me connecter à MySQL en Python 3 sous Windows?

pip install mysqlclient

Exemple

#!/Python36/python
#Veuillez changer le chemin ci-dessus pour correspondre à votre plateforme.  Je l'exécute sous Windows
import MySQLdb
db = MySQLdb.connect(user="mon-nom-d'utilisateur",passwd="mon-mot-de-passe",host="localhost",db="ma-nom-base-de-données")
cursor = db.cursor()
cursor.execute("SELECT * from mon-nom-de-table")
data=cursor.fetchall()
for row in data :
    print (row)
db.close()

Je ne trouve pas mysqldb pour Python 3.

mysqldb n'a pas encore été porté

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X