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.
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
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)
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()
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')
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
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