Touchez MySQL depuis Python 3

Lorsque j'ai étudié comment faire fonctionner MySQL à partir de Python 3, j'ai trouvé beaucoup d'informations sur Python 2 et d'anciennes informations et c'était difficile à comprendre, donc je vais le résumer.

L'environnement utilise Python 3.6.

paquet

Il existe également un package appelé mysqlclient, mais le MySQL officiel mysql-connector-python-rf Il existe un package appelé -connector-python-rf), donc je vais utiliser celui-ci cette fois.

** [2018-12-03 Addendum] ** Veuillez noter que mysql-connector-python-rf a cessé de se mettre à jour, et il semble y avoir un paquet appelé mysql-connector-python, qui est également officiel pour MySQL. Voir la section des commentaires pour plus de détails.

Je ne sais pas grand-chose sur le mérite des deux packages, mais je trouve personnellement mysql-connector-python-rf plus facile à utiliser car je n'ai pas trouvé de moyen de traiter les résultats de la requête comme un dictionnaire avec mysqlclient.

Vous pouvez l'installer à partir de pip normalement.

$ pip install mysql-connector-python-rf

Lien

Le connecteur PostgreSQL (psycopg2) a pu se connecter en lançant simplement une chaîne URL, mais il semble que mysql-connector-python-rf ne le puisse pas. Il n'y a aucune aide pour cela, alors analysez-le avec urllib.

from urllib.parse import urlparse
import mysql.connector

url = urlparse('mysql://user:pass@localhost:3306/dbname')

conn = mysql.connector.connect(
    host = url.hostname or 'localhost',
    port = url.port or 3306,
    user = url.username or 'root',
    password = url.password or '',
    database = url.path[1:],
)

Si vous voulez vérifier si vous pouvez vous connecter, utilisez ʻis_connected () `.

conn.is_connected()  #=> Bool

Si vous maintenez la connexion ouverte, vous risquez de perdre la connexion avant de le savoir. Pour éviter cela, envoyez régulièrement un ping et reconnectez-vous si la connexion n'est pas possible.

conn.ping(reconnect=True)

Exécution de la requête

Créez un objet curseur et exécutez la requête avec la méthode ʻexecute` de la même manière que Standard SQLite Connector.

cur = conn.cursor()

Obtenir (SELECT)

Après avoir exécuté la requête, vous pouvez récupérer l'enregistrement avec la méthode fetchone / fetchmany / fetchall.

cur.execute('SELECT * FROM users')

cur.fetchall()  #=> [(1, 'foo'), (2, 'bar')]

Les déclarations préparées sont également disponibles.

cur.execute('SELECT * FROM users WHERE id = %s', [1])

cur.statement  #=> 'SELECT * FROM users WHERE id = 1'

cur.fetchone()  #=> (1, 'foo')

Mettre à jour (INSERT / UPDATE / DELETE)

Commit avec conn.commit () après avoir exécuté la requête.

try:
    cur.execute('INSERT INTO users (name) VALUES (%s)', ['foo'])
    conn.commit()
except:
    conn.rollback()
    raise

Obtenez le résultat sous forme de dictionnaire

Si vous passez l'option dictionary lors de la création d'un objet curseur, vous pouvez obtenir le résultat de l'exécution de la requête sous forme de dictionnaire.

cur = conn.cursor(dictionary=True)

cur.fetchall()  #=> [{'id': 1, 'name': 'foo'}, {'id': 2, 'name': 'bar'}]

Voir ci-dessous pour les options qui peuvent être passées à d'autres objets curseur.

MySQL :: MySQL Connector/Python Developer Guide :: 10.6 Subclasses cursor.MySQLCursor

Recommended Posts

Touchez MySQL depuis Python 3
Utilisez MySQL depuis Python
Utiliser MySQL depuis Python
Utiliser MySQL depuis Anaconda (python)
Toucher les objets Python d'Elixir
sql à sql
MeCab de Python
Recevoir des données textuelles de mysql avec python
Connexion de python à MySQL sur CentOS 6.4
Explication API pour toucher mastodonte de python
Utilisez Thingsspeak de Python
Exploitez Filemaker depuis Python
Utiliser fluentd de python
Accéder à bitcoind depuis python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Python depuis ou import
Exécutez Python à partir d'Excel
Installer Python à partir de la source
Exécuter des commandes depuis Python
[ev3dev × Python] Capteur tactile
Ecrire Python dans MySQL
Python débutant touche Pytorch (3)
Faites fonctionner le neutron de Python!
Faire fonctionner LXC depuis Python
Manipuler riak depuis python
Forcer Python depuis Fortran
Utilisez BigQuery depuis Python.
Python débutant touche Pytorch (1)
Python débutant touche Pytorch (2)
Connectez python à mysql
Exécuter la commande depuis Python
[Python] Lire depuis Stdin
Utilisez mecab-ipadic-neologd de Python
Aplatir à l'aide du rendement Python de
Appeler CPLEX depuis Python (DO cplex)
Deep Python appris de DEAP
Publier de Python vers Slack
Fonctionnalités de grammaire ajoutées à partir de Python3.6
Flirter de PHP à Python
Rendre MeCab disponible à partir de Python 3
Informations obtenues à partir de tweet_id (Python)
OCR à partir de PDF en Python
Exécutez le script illustrator à partir de python
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
Étude de Python Hour4: orientée objet ②
Interroger Athena depuis Lambda Python
Accéder à Oracle DB depuis Python
Étude de Python Hour3: Fonctions
Démarrer / arrêter GCE à partir de python
Arrêtez Omxplayer à partir du code Python
Passer de python2.7 à python3.6 (centos7)
Connectez-vous à sqlite depuis python
Installez pyenv depuis Homebrew, installez Python depuis pyenv
Étude de Python Hour4: orientée objet ①
Touchez Apache Beam avec Python
Convention de dénomination Python (à partir de PEP8)
Avec skype, notifiez avec skype de python!
Utilisez l'API e-Stat de Python
Enregistrer le problème Redmine de Python
Regroupement de connexions avec Python + MySQL