web-dev-qa-db-fra.com

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

J'utilise ActiveState Python 3 sous 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.

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

136
panofish

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
  • Pur python
  • Un peu lent
  • Non compatible avec MySQLdb

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

  • Pur python
  • Plus rapide que mysql-connector
  • Presque complètement compatible avec MySQLdb, après avoir appelé pymysql.install_as_MySQLdb()

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

  • fourchette de pymysql avec accélération C optionnelle

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

  • La bibliothèque recommandée par Django.
  • Fourchette amicale de la MySQLdb d'origine, espère fusionner un jour
  • L'implémentation la plus rapide, car elle est basée sur C.
  • Le plus compatible avec MySQLdb, comme c'est un fork
  • Debian et Ubuntu l'utilisent pour fournir les paquets python-mysqldb etpython3-mysqldb.

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

240
Collin Anderson

Vous devriez probablement utiliser pymysql - le client MySQL Pure Python.
Il fonctionne avec Python 3.x et n’a aucune dépendance.

Ce client MySQL pur Python fournit une API DB à 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()
65
Oleh Prypin

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 fichier .tar.gz, extrait, exécuté "setup.py install", et tout semblait aller pour le mieux. Jusqu'à ce que j'essaye de me connecter à une base de données et que je reçois "KeyError [56]". Une erreur que je n'ai pu trouver documentée nulle part.

J'ai donc abandonné le logiciel pymysql et choisi le connecteur Oracle MySQL .

Il s’agit d’un package d’installation qui fonctionne immédiatement. Et cela semble aussi décemment documenté.

7
Bogd

si vous voulez d’abord utiliser MySQLdb, vous devez installer pymysql sur votre ordinateur en tapant cmd de windows

    pip install pymysql

puis dans Shell en python, tapez

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

cela établira la connexion.

6
Dimple

Non testé, mais certains fichiers binaires sont disponibles sur:

Fichiers binaires Windows non officiels

5
casevh

PyMySQL offre également une interface similaire à MySQLDb. Vous pouvez essayer dans votre initialisation:

import pymysql
pymysql.install_as_MySQLdb()

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

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

4
sagarchalise

Résumé

Mysqlclient est la meilleure alternative (IMHO) car il fonctionne parfaitement avec Python 3+, suit les conventions conventions (contrairement à mysql Connector), utilise le nom d'objet mysqldb qui permet le portage pratique de logiciel existant et est utilisé par Django pour les versions Python 3

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

Oui. Mysqlclient vous permet d'utiliser les fonctions de mysqldb. Bien que, rappelez-vous que c'est pas un port direct de mysqldb, mais une construction de 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é

3
Rahul

Sur mon Mac OS Maverick j'essaye ceci:

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

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

  2. # un script simple pour la connexion MySQL importer pymysql db = pymysql.connect (hôte = "localhost", utilisateur = "racine", passwd = " *", db = "biblioteca ") #Sûr, il s'agit de Informations pour mon db # fermer la connexion db.close () *

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

1
duke2909

Oracle/MySQL fournit un pilote Python DBAPI officiel et pur: http://dev.mysql.com/downloads/connector/python/

Je l'ai utilisé avec Python 3.3 et l'ai trouvé très bien. Fonctionne également avec SQLAlchemy.

Voir aussi cette question: Est-il encore trop tôt pour monter à bord du train Python 3?

1
codeape

Cela ne répond pas complètement à ma question initiale, mais je pense qu'il est important d'informer tout le monde de 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 géniaux et fonctionnent bien. Je pense que mysql.connector est finalement meilleur à long terme cependant.

0
panofish

Ceci est un tutoriel rapide sur la façon de faire fonctionner Python 3.7 avec Mysql 
Merci à tous ceux à 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

REQUIREMENTS .. télécharger et installer ces premiers ...
1. Télécharger Xampp ..
https://www.apachefriends.org/download.html
2. Télécharger Python
https://www.python.org/downloads/windows/

--------------
//MÉTHODE
--------------
Installez d'abord xampp une fois l'installation terminée - installez Python 3.7.
Une fois l’installation terminée, redémarrez votre système Windows.
Maintenant, lancez xampp et à partir du panneau de configuration - démarrez le serveur mysql.
Confirmez 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.

Ceci est pour vérifier la version de 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 ailleurs pour un accès rapide.
Ouvrez ce fichier avec sublime ou un autre éditeur de texte et insérez-le.
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 ... votre connexion entre un script python et mysql est maintenant complète ...
Prendre plaisir...

0
Kybrd

J'utilise cymysql avec python3 sur un Raspberry Pi Je l'ai simplement installé par: Sudo pip3 installe cython Sudo pip3 installe 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 

0
Jaco

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

J'ai installé pip sur mes fenêtres 7, avec python 3.3 Just Pip installer cymysql

(vous n’avez pas besoin de cython) rapide et sans douleur

0
Lazik