Berühren Sie MySQL in Python 3

Als ich untersuchte, wie MySQL von Python 3 aus betrieben wird, fand ich viele Informationen über Python 2 und alte Informationen, die schwer zu verstehen waren. Daher werde ich sie zusammenfassen.

Die Umgebung verwendet Python 3.6.

Paket

Es gibt auch ein Paket namens mysqlclient, aber das offizielle MySQL mysql-connector-python-rf Es gibt ein Paket namens -connector-python-rf), also werde ich dieses dieses Mal verwenden.

** [2018-12-03 Addendum] ** Beachten Sie, dass mysql-connector-python-rf nicht mehr aktualisiert wird und es anscheinend ein Paket namens mysql-connector-python gibt, das auch für MySQL offiziell ist. Weitere Informationen finden Sie im Kommentarbereich.

Ich weiß nicht viel über die Vorzüge der beiden Pakete, aber ich persönlich finde mysql-connector-python-rf einfacher zu verwenden, da ich keine Möglichkeit gefunden habe, die Abfrageergebnisse in mysqlclient als Wörterbuch zu behandeln.

Sie können es normal von pip installieren.

$ pip install mysql-connector-python-rf

Verbindung

Der PostgreSQL-Connector (psycopg2) konnte eine Verbindung herstellen, indem nur eine URL-Zeichenfolge ausgegeben wurde. Mysql-connector-python-rf kann dies jedoch anscheinend nicht. Es gibt keine Hilfe dafür, also analysieren Sie es mit 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:],
)

Wenn Sie überprüfen möchten, ob Sie eine Verbindung herstellen können, verwenden Sie "is_connected ()".

conn.is_connected()  #=> Bool

Wenn Sie die Verbindung offen halten, können Sie die Verbindung verlieren, bevor Sie sie kennen. Um dies zu vermeiden, senden Sie regelmäßig einen Ping und stellen Sie die Verbindung wieder her, wenn Sie keine Verbindung herstellen können.

conn.ping(reconnect=True)

Abfrageausführung

Erstellen Sie ein Cursorobjekt und führen Sie eine Abfrage mit der Methode "execute" auf die gleiche Weise aus wie Standard SQLite Connector.

cur = conn.cursor()

Holen Sie sich (SELECT)

Nach dem Ausführen der Abfrage können Sie den Datensatz mit der Methode fetchone / fetchmany / fetchall abrufen.

cur.execute('SELECT * FROM users')

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

Vorbereitete Anweisungen sind ebenfalls verfügbar.

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

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

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

Update (INSERT / UPDATE / DELETE)

Commit mit "conn.commit ()" nach Ausführung der Abfrage.

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

Holen Sie sich das Ergebnis als Wörterbuch

Wenn Sie beim Erstellen eines Cursorobjekts die Option "Wörterbuch" übergeben, können Sie das Ergebnis der Abfrageausführung als Wörterbuch abrufen.

cur = conn.cursor(dictionary=True)

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

Im Folgenden finden Sie Optionen, die an andere Cursorobjekte übergeben werden können.

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

Recommended Posts

Berühren Sie MySQL in Python 3
Verwenden Sie MySQL aus Python
Verwenden Sie MySQL aus Python
Verwenden Sie MySQL von Anaconda (Python)
Berühren Sie Python-Objekte in Elixir
SQL zu SQL
MeCab von Python
Empfangen Sie Textdaten von MySQL mit Python
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
API-Erklärung zum Berühren von Mastodon aus Python
Verwenden Sie thingspeak aus Python
Bedienen Sie Filemaker von Python aus
Verwenden Sie fließend Python
Greifen Sie über Python auf Bitcoind zu
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Python aus oder importieren
Führen Sie Python aus Excel aus
Installieren Sie Python von der Quelle
Führen Sie Befehle aus Python aus
[ev3dev × Python] Berührungssensor
Schreiben Sie Python in MySQL
Python-Anfänger berührt Pytorch (3)
Bedienen Sie Neutronen von Python!
Betreiben Sie LXC von Python aus
Manipuliere Riak aus Python
Erzwinge Python aus Fortran
Verwenden Sie BigQuery aus Python.
Python-Anfänger berührt Pytorch (1)
Python-Anfänger berührt Pytorch (2)
Verbinden Sie Python mit MySQL
Führen Sie den Befehl von Python aus
[Python] Von Stdin lesen
Verwenden Sie mecab-ipadic-neologd von Python
Mit Python abflachen
Rufen Sie CPLEX von Python aus auf (DO cplex)
Deep Python hat von DEAP gelernt
Post von Python nach Slack
Grammatikfunktionen aus Python3.6 hinzugefügt
Flirte von PHP nach Python
Stellen Sie MeCab in Python 3 zur Verfügung
Informationen von tweet_id (Python)
OCR aus PDF in Python
Führen Sie das Illustrator-Skript von Python aus
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Studie aus Python Hour4: Objektorientiert ②
Fragen Sie Athena von Lambda Python ab
Greifen Sie über Python auf Oracle DB zu
Studie aus Python Hour3: Funktionen
Starten / Stoppen von GCE über Python
Stoppen Sie Omxplayer vom Python-Code
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Installieren Sie pyenv von Homebrew, installieren Sie Python von pyenv
Studie aus Python Hour4: Objektorientiert ①
Berühren Sie Apache Beam mit Python
Python-Namenskonvention (ab PEP8)
Mit Skype benachrichtigen Sie mit Skype von Python!
Verwenden Sie die e-Stat-API von Python
Registrieren Sie das Redmine-Problem von Python
Verbindungspooling mit Python + MySQL