Comment se connecter à une base de données MySQL à l'aide d'un programme python ?
Réponses
Trop de publicités?Se connecter à MYSQL avec Python en 3 étapes
1 - Réglage
Vous devez installer un pilote MySQL avant de faire quoi que ce soit. Contrairement à PHP, seul le pilote SQLite est installé par défaut avec Python. Le paquetage le plus utilisé pour ce faire est MySQLdb mais il est difficile de l'installer en utilisant easy_install.
Pour les utilisateurs de Windows, vous pouvez obtenir un exe de MySQLdb .
Pour Linux, il s'agit d'un paquet occasionnel (python-mysqldb). (Vous pouvez utiliser sudo apt-get install python-mysqldb en ligne de commande pour le télécharger).
Pour Mac, vous pouvez installer MySQLdb en utilisant Macport .
2 - Utilisation
Après l'installation, redémarrez. Ce n'est pas obligatoire, mais cela m'empêchera de répondre à 3 ou 4 autres questions dans ce post si quelque chose ne va pas. Donc, s'il vous plaît, redémarrez.
Dans ce cas, c'est comme si vous utilisiez un autre paquet :
#!/usr/bin/python
import MySQLdb
db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="john", # your username
passwd="megajonhy", # your password
db="jonhydb") # name of the data base
# you must create a Cursor object. It will let
# you execute all the queries you need
cur = db.cursor()
# Use all the SQL you like
cur.execute("SELECT * FROM YOUR_TABLE_NAME")
# print all the first cell of all the rows
for row in cur.fetchall() :
print row[0]
Bien sûr, il y a des milliers de possibilités et d'options, ceci est un exemple très basique. Vous devrez consulter la documentation. Un bon point de départ .
3 - Utilisation plus avancée
Une fois que vous saurez comment cela fonctionne, vous voudrez peut-être utiliser une ORM pour éviter d'écrire manuellement du SQL et manipuler vos tables comme des objets Python. L'ORM le plus connu dans la communauté Python est SQLAlchemy .
Je vous conseille vivement de l'utiliser : votre vie sera beaucoup plus facile.
J'ai récemment découvert un autre joyau dans le monde des Pythons : peewee . C'est un ORM très léger, très facile et rapide à configurer et à utiliser. Il fait ma journée pour les petits projets ou les applications autonomes, où l'utilisation de gros outils comme SQLAlchemy ou Django est excessive :
import peewee
from peewee import *
db = MySQLDatabase('jonhydb', user='john',passwd='megajonhy')
class Book(peewee.Model):
author = peewee.CharField()
title = peewee.TextField()
class Meta:
database = db
Book.create_table()
book = Book(author="me", title='Peewee is cool')
book.save()
for book in Book.filter(author="me"):
print book.title
Peewee is cool
Cet exemple fonctionne dès le départ. Rien d'autre que le fait que peewee ( pip install peewee
:-)) est nécessaire. Pas de configuration compliquée. C'est vraiment cool.
Voici une façon de le faire.
#!/usr/bin/python
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="appuser", passwd="",
db="onco")
cursor = db.cursor()
# execute SQL select statement
cursor.execute("SELECT * FROM LOCATION")
# commit your changes
db.commit()
# get the number of rows in the resultset
numrows = int(cursor.rowcount)
# get and display one row at a time.
for x in range(0,numrows):
row = cursor.fetchone()
print row[0], "-->", row[1]
De ici .
Si vous n'avez pas besoin de MySQLdb, mais que vous acceptez n'importe quelle bibliothèque, je vous recommande vivement MySQL Connector/Python de MySQL : http://dev.mysql.com/downloads/connector/python/ .
Il s'agit d'un seul paquet (environ 110k), pur Python, donc indépendant du système, et très simple à installer. Il suffit de le télécharger, de double-cliquer, de confirmer l'accord de licence et c'est parti. Il n'y a pas besoin de Xcode, MacPorts, de compiler, de redémarrer
Puis vous vous connectez comme :
import mysql.connector
cnx = mysql.connector.connect(user='scott', password='tiger',
host='127.0.0.1',
database='employees')
cnx.close()
En tant que conducteur de db, il y a aussi oursql . Certaines des raisons énumérées sur ce lien, qui disent pourquoi oursql est meilleur :
- oursql dispose d'une réelle paramétrisation, envoyant le SQL et les données à MySQL de manière complètement séparée.
- oursql permet d'introduire des données textuelles ou binaires dans la base de données et de les en extraire, au lieu d'exiger que tout soit mis en mémoire tampon dans le client.
- oursql peut à la fois insérer des lignes paresseusement et récupérer des lignes paresseusement.
- oursql a le support unicode activé par défaut.
- oursql supporte python 2.4 à 2.7 sans aucun avertissement de dépréciation sur 2.6+ (voir PEP 218) et sans échouer complètement sur 2.7 (voir PEP 328).
- oursql fonctionne nativement sur python 3.x.
Alors comment se connecter à mysql avec oursql ?
Très similaire à mysqldb :
import oursql
db_connection = oursql.connect(host='127.0.0.1',user='foo',passwd='foobar',db='db_name')
cur=db_connection.cursor()
cur.execute("SELECT * FROM `tbl_name`")
for row in cur.fetchall():
print row[0]
Le site tutoriel dans la documentation est assez décent.
Et bien sûr pour ORM SQLAlchemy est un bon choix, comme déjà mentionné dans les autres réponses.