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

145

J'utilise ActiveState Python 3 sur Windows et je voulais me connecter à ma base de données MySQL. J'ai entendu dire que mysqldbc'était le module à utiliser. Je ne trouve pas mysqldbpour Python 3.

Existe-t-il un référentiel disponible pour lequel les binaires existent mysqldb? Comment puis-je me connecter à MySQL en Python 3 sous Windows?

panofish
la source
Merci à casevh pour le lien vers les binaires non officiels, mais j'étais trop impatient et il semble que les masses utilisent toujours python2 ... alors j'ai installé python 2.7 et installé MySQLdb depuis codegood.com/archives/129
panofish
1
duplication possible de la lib MySQL-db pour Python 3.0?
itsadok
1
Chaque fois que je tape pip, mon estomac me retourne. 7 ans et plus.
Ska

Réponses:

274

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

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

  • Officiellement pris en charge 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

  • fork de pymysql avec accélérations C en option

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

  • Bibliothèque recommandée par Django.
  • Amical fork du MySQLdb original, espère fusionner un jour
  • L'implémentation la plus rapide, car elle est basée sur C.
  • Le plus compatible avec MySQLdb, car c'est un fork
  • Debian et Ubuntu l'utilisent pour fournir à la fois des packages python-mysqldbet python3-mysqldb.

benchmarks ici: https://github.com/methane/mysql-driver-benchmarks

Collin Anderson
la source
26
pip install mysqlclient a juste travaillé pour moi! merci pour la liste complète des options.
ILMostro_7
4
mysqlclientvient de fonctionner pour mon installation Python3.4 + Django + Passenger + Dreamhost.
ryanjdillon
Ubuntu a mysqlclient Debian pas
ManuelSchneid3r
On dirait que mysqlclient est dans Debian testingas python3-mysqldb, mais il ne l'est pas stable. Ce sera donc dans la prochaine version.
Collin Anderson
pour installer le connecteur mysql sur ubuntu, vous pouvez utiliser un apt commesudo apt-get install python3-mysql.connector
peiman F.
67

Vous devriez probablement utiliser pymysql - Pure Python MySQL à la place.
Il fonctionne avec Python 3.x et n'a aucune dépendance.

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

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()
Oleh Prypin
la source
14
malheureusement, c'est une bibliothèque documentée ZERO qui ne fonctionne tout simplement pas
o0 '.
7
@Lohoris: Comment se fait-il que je l'utilise sans aucun problème?
Oleh Prypin
Je n'ai pas pu l'installer sur Windows 7 avec Python 3.x. Quelqu'un sait comment?
paul
3
Python version 3.3.1 ici et il ne s'installe pas. Se plaint d'un module appelé manquant constants.
Pijusn
@Pius Parce que tu fais mal. Je viens de vérifier et cela fonctionne.
Oleh Prypin
7

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

J'ai donc abandonné pymysql, et je me suis installé sur le connecteur Oracle MySQL .

Il est livré sous forme de package d'installation et fonctionne hors de la boîte. Et cela semble aussi décemment documenté.

Bogd
la source
J'utilisais MySQLdb et cela fonctionne très bien, mais clairement, je m'attendrais à ce que cela devienne le standard de facto au fil du temps.
panofish
6

si vous voulez utiliser MySQLdb d'abord vous devez installer pymysql sur votre pc en tapant cmd de windows

    pip install pymysql

puis dans le shell python, tapez

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

cela établira la connexion.

Fossette
la source
5

Résumé

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

Y a-t-il un référentiel disponible où les binaires existent pour mysqldb?

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

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

pip installer mysqlclient

Exemple

#!/Python36/python
#Please change above path to suit your platform.  Am running it on Windows
import MySQLdb
db = MySQLdb.connect(user="my-username",passwd="my-password",host="localhost",db="my-databasename")
cursor = db.cursor()
cursor.execute("SELECT * from my-table-name")
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é

Rahul
la source
4

PyMySQL donne également à MySQLDb une interface similaire. Vous pouvez essayer lors de votre initialisation:

import pymysql
pymysql.install_as_MySQLdb()

Il existe également un portage de mysql-python sur github pour python3.

https://github.com/davispuh/MySQL-for-Python-3

Sagarchalise
la source
1

Sur mon Mac OS Maverick, j'essaye ceci:

Après cela, entrez dans l'interpréteur python3 et tapez:

  1. importer pymysql . S'il n'y a pas d'erreur, votre installation est correcte. Pour la vérification, écrivez un script pour vous connecter à mysql avec ce formulaire:

  2. # un script simple pour la connexion MySQL import pymysql db = pymysql.connect (host = "localhost", user = "root", passwd = "* ", db =" biblioteca ") #Sûr, ce sont des informations pour ma base de données # fermer la connexion db.close () *

Donnez-lui un nom ("con.py" par exemple) et enregistrez-le sur le bureau. Dans le terminal, tapez "cd desktop" puis $ python con.py S'il n'y a pas d'erreur, vous êtes connecté au serveur MySQL. Bonne chance!

duc2909
la source
0

CyMySQL https://github.com/nakagami/CyMySQL

J'ai installé pip sur mes fenêtres 7, avec python 3.3 il suffit d'installer cymysql

(vous n'avez pas besoin de cython) rapide et indolore

Lazik
la source
0

Cela ne répond pas entièrement à ma question initiale, mais je pense qu'il est important que tout le monde sache ce que j'ai fait et pourquoi.

J'ai choisi de continuer à utiliser python 2.7 au lieu de python 3 en raison de la prévalence de 2.7 exemples et modules sur le Web en général.

J'utilise maintenant mysqldb et mysql.connector pour me connecter à MySQL en Python 2.7. Les deux sont excellents et fonctionnent bien. Je pense que mysql.connector est finalement meilleur à long terme.

panofish
la source
Je suis curieux de savoir si vous utilisez toujours Python 2.7. En général, je pense qu'il est vraiment important de faire la transition vers Python 3, et j'ai été surpris de voir autant de programmeurs opter pour Python 2.7 pour de nouveaux projets. Comment ça s'est passé?
vy32 du
@ vy32 Je pense que vous serez peut-être moins surpris par le choix de py27 par les développeurs si vous considérez que de nombreux OS de serveur ne prennent pas directement en charge Python 3. Red Hat Enterprise Linux était toujours fourni avec Python 2.6 jusqu'à la version la plus récente, et même celle-là seulement a py27.
coredumperror
Une autre raison d'utiliser python 2.7 est que Maya (qui prend en charge python) utilise 2.7 en interne. BTW ... si vous avez également besoin de vous connecter à MySQL via python dans Maya ... utilisez le connecteur mysql pur python.
panofish
0

J'utilise cymysql avec python3 sur un raspberry pi que j'ai simplement installé par: sudo pip3 installer cython sudo pip3 installer cymysql où cython n'est pas nécessaire mais devrait rendre cymysql plus rapide

Jusqu'à présent, cela fonctionne comme un charme et très similaire à MySQLdb

Jaco
la source
0

Ceci est un tutoriel rapide sur la façon de faire fonctionner Python 3.7 avec Mysql
Merci à tous ceux de qui j'ai obtenu des réponses à mes questions
- j'espère que cela aidera quelqu'un un jour.
-------------------------------------------------- -
Mon système:
Version Windows: Pro 64 bits

EXIGENCES .. téléchargez et installez-les d'abord ...
1. Téléchargez Xampp ..
https://www.apachefriends.org/download.html
2. Téléchargez Python
https://www.python.org/downloads/windows/

- ------------
// METHODE
--------------
Installez d'abord xampp après avoir terminé l'installation - installez Python 3.7.
Une fois l'installation des deux terminée, redémarrez votre système Windows.
Maintenant, démarrez xampp et depuis le panneau de configuration - démarrez le serveur mysql.
Confirmer les versions en ouvrant CMD et dans le type de terminal

c:\>cd c:\xampp\mysql\bin

c:\xampp\mysql\bin>mysql -h localhost -v
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.21-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

C'est pour vérifier la version MYSQL

c:\xampp\mysql\bin>python
Python 3.7.0b3 (v3.7.0b3:4e7efa9c6f, Mar 29 2018, 18:42:04) [MSC v.1913 64 bit (AMD64)] on win32

Ceci est pour vérifier la version Python
Maintenant que les deux ont été confirmés, tapez ce qui suit dans le CMD ...

c:\xampp\mysql\bin>pip install pymysql

Une fois l'installation de pymysql terminée.
créez un nouveau fichier appelé "testconn.py" sur votre bureau ou n'importe où pour un accès rapide.
Ouvrez ce fichier avec sublime ou un autre éditeur de texte et mettez-le dedans.
N'oubliez pas de modifier les paramètres pour refléter votre base de données.

#!/usr/bin/python
import pymysql
pymysql.install_as_MySQLdb() 

import MySQLdb
db = MySQLdb.connect(user="yourusernamehere",passwd="yourpasswordhere",host="yourhosthere",db="yourdatabasehere")
cursor = db.cursor()
cursor.execute("SELECT * from yourmysqltablehere")
data=cursor.fetchall()
for row in data :
    print (row)
db.close()

Maintenant dans votre CMD - tapez

c:\Desktop>testconn.py

Et c'est tout ... vous êtes maintenant entièrement connecté d'un script python à mysql ...
Profitez ...

Kybrd
la source
0

importer pymysql

connexion à la base de données ouverte

db = pymysql.connect ("localhost", "root", "", "ornament")

préparer un objet curseur en utilisant la méthode cursor ()

curseur = db.cursor ()

sql = "SELECT * FROM élément"

curseur.execute (sql)

Récupérez toutes les lignes d'une liste de listes.

results = cursor.fetchall () pour la ligne dans les résultats: item_title = row [1] comment = row [2] print ("Le titre des éléments est le suivant =% s, les commentaires sont les suivants =% s"% \ (item_title, commentaire))

Amjad
la source