Python propose plusieurs façons de se connecter à une base de données MySQL et de traiter des données. Cet article décrit trois méthodes.
Les bases de données et les utilisateurs MySQL doivent déjà exister avant que vous puissiez utiliser l'une des méthodes suivantes. Pour plus d'informations sur la gestion des bases de données MySQL à l'aide de cPanel, veuillez consulter cet article.Se connecter à MySQL avec Python
Avant de pouvoir accéder aux bases de données MySQL à l'aide de Python, vous devez installer un (ou plusieurs) des packages suivants dans un environnement virtuel :
- mysqlclient :Ce paquet contient le MySQLdb module. Il est écrit en C et est l'un des packages Python les plus couramment utilisés pour MySQL.
- mysql-connector-python :Ce paquet contient le mysql.connector module. Il est entièrement écrit en Python.
- PyMySQL :Ce paquet contient le pymysql module. Il est entièrement écrit en Python.
Ces trois packages utilisent l'API de base de données SQL portable de Python. Cela signifie que si vous passez d'un module à un autre, vous pouvez réutiliser la quasi-totalité de votre code existant (l'exemple de code ci-dessous montre comment procéder).
Configuration de l'environnement virtuel Python et installation d'un package MySQL
Pour configurer l'environnement virtuel Python et installer un package MySQL, procédez comme suit :
- Connectez-vous à votre compte à l'aide de SSH.
- Pour créer un environnement virtuel, saisissez les commandes suivantes :
cd ~ virtualenv sqlenv
- L'environnement virtuel La commande crée un environnement virtuel nommé sqlenv , et les commandes suivantes de cette procédure supposent que l'environnement est nommé sqlenv . Vous pouvez utiliser n'importe quel nom d'environnement, mais assurez-vous de remplacer toutes les occurrences de sqlenv avec votre propre nom d'environnement.
- Si vous exécutez une autre version de Python (par exemple, si vous avez configuré manuellement une nouvelle version de Python pour votre compte, comme décrit dans cet article), vous pouvez spécifier cette version pour l'environnement virtuel. Par exemple, pour installer une version configurée par l'utilisateur de Python 3.8 dans l'environnement virtuel, vous pouvez utiliser la commande suivante :
virtualenv -p /home/username/bin/python3.8 sqlenv
-
Pour activer l'environnement virtuel, tapez la commande suivante :
source sqlenv/bin/activate
L'invite de commande commence maintenant par (sqlenv) pour indiquer que vous travaillez dans un environnement virtuel Python. Toutes les commandes suivantes de cette procédure supposent que vous travaillez dans l'environnement virtuel. Si vous vous déconnectez de votre session SSH (ou désactivez l'environnement virtuel en utilisant le bouton désactiver commande), assurez-vous de réactiver l'environnement virtuel avant de suivre les étapes ci-dessous et d'exécuter l'exemple de code. -
Pour mettre à jour pip dans l'environnement virtuel, tapez la commande suivante :
pip install -U pip
-
Tapez la commande du package que vous souhaitez installer :
- Pour installer le mysqlclient package, tapez la commande suivante :
pip install mysqlclient
-
Pour installer mysql-connector-python package, tapez la commande suivante :
pip install mysql-connector-python
-
Pour installer le pymysql package, tapez la commande suivante :
pip install pymysql
- Pour installer le mysqlclient package, tapez la commande suivante :
Exemple de code
Après avoir installé un package MySQL dans l'environnement virtuel, vous êtes prêt à travailler avec des bases de données réelles. L'exemple de code Python suivant montre comment procéder, ainsi que la facilité avec laquelle il est possible de basculer entre les différentes implémentations de packages SQL. L'exemple de code fonctionne avec Python 2.7 et Python 3.x.
Dans votre propre code, remplacez username avec le nom d'utilisateur de la base de données MySQL, mot de passe avec le mot de passe de l'utilisateur de la base de données et dbname avec le nom de la base :
#!/usr/bin/python from __future__ import print_function hostname = 'localhost' username = 'username' password = 'password' database = 'dbname' # Simple routine to run a query on a database and print the results: def doQuery( conn ) : cur = conn.cursor() cur.execute( "SELECT fname, lname FROM employee" ) for firstname, lastname in cur.fetchall() : print( firstname, lastname ) print( "Using mysqlclient (MySQLdb):" ) import MySQLdb myConnection = MySQLdb.connect( host=hostname, user=username, passwd=password, db=database ) doQuery( myConnection ) myConnection.close() print( "Using mysql.connector:" ) import mysql.connector myConnection = mysql.connector.connect( host=hostname, user=username, passwd=password, db=database ) doQuery( myConnection ) myConnection.close() print( "Using pymysql:" ) import pymysql myConnection = pymysql.connect( host=hostname, user=username, passwd=password, db=database ) doQuery( myConnection ) myConnection.close()
Cet exemple crée une série de Connexion objets qui ouvrent la même base de données en utilisant différents modules MySQL. Étant donné que les trois modules MySQL utilisent l'interface de l'API de base de données SQL portable, ils peuvent utiliser le code dans doQuery() fonctionner sans aucune modification.
Lorsque vous avez une Connexion objet associé à une base de données, vous pouvez créer un Curseur objet. Le curseur l'objet vous permet d'exécuter le execute() méthode, qui à son tour vous permet d'exécuter des instructions SQL brutes (dans ce cas, un SELECT requête sur une table nommée employee ).
Comme vous pouvez le voir, l'API de base de données SQL portable de Python facilite le basculement entre les modules MySQL dans votre code. Dans l'exemple ci-dessus, les seules modifications de code nécessaires pour utiliser un module différent sont l'importation et connectez déclarations.Plus d'informations
- Pour plus d'informations sur l'API de base de données SQL portable de Python, veuillez consulter https://www.python.org/dev/peps/pep-0249.
- Pour plus d'informations sur mysqlclient package, veuillez visiter https://pypi.org/project/mysqlclient.
- Pour plus d'informations sur mysql-connector-python package, veuillez visiter https://pypi.python.org/pypi/mysql-connector-python.
- Pour plus d'informations sur PyMySQL package, veuillez visiter https://pypi.python.org/pypi/PyMySQL.