Lassen Sie uns MySQL-Daten mit Python bearbeiten

Normalerweise benutze ich Django, um mich voll und ganz in die Vorteile des O / R-Mappers zu vertiefen. Wenn ich also nicht gut darin bin Datenoperationen, die ausgeführt werden können, ohne SQL-Anweisungen in eine Tabelle zu schreiben, die nichts mit Django zu tun hat Können Sie sagen "Sir, ja, Sir!", Wenn Sie gefragt werden, ob Sie es versuchen möchten? Ich könnte nicht! Dann habe ich mein Bestes versucht, damit ich es zusammenfassen kann! Qiita Artikel beginnt!

Um ehrlich zu sein, ändert sich das, was Sie tun, in keiner Sprache. Wenn Sie sich also an eine erinnern, können Sie es auch in anderen Sprachen anwenden. Ich denke es wird funktionieren.

MySQL DB-Connector

Wenn Sie Django verwenden, haben Sie einen MySQL-Connector, oder? Okay, als nächstes! (Ich mag, welches besser ist, also lasse ich es weg) Derzeit ist dieser Artikel für MySQL-Python 1.2.5.

Lassen Sie uns verbinden

>>> import MySQLdb

>>>> conn = MySQLdb.connect(host='hoge_host', user='hoge_user', passwd='hogehoge', db='hoge1')

Lassen Sie uns vorerst eine Verbindung herstellen! MySQLdb hat connection () und connect (), verwendet jedoch connect (). der Grund ist,

>>> conn = MySQLdb.connection(host='hoge_host', user='hoge_user', passwd='hogehoge', db='hoge1')
>>> print type(conn)
<type '_mysql.connection'>
>>> conn = MySQLdb.connect(host='hoge_host', user='hoge_user', passwd='hogehoge', db='hoge1')
>>> print type(conn)
<class 'MySQLdb.connections.Connection'>

Ja, verstehst du Wenn Sie eine Verbindung mit connection () herstellen, wird _mysql.connection angezeigt Beim Herstellen einer Verbindung mit connect () wurde ein MySQLdb.connections.Connection-Objekt erstellt.

Die _mysql-Klasse wird in die Basisklasse von MySQLdb eingeschlossen und die Funktion zu MySQLdb hinzugefügt. Da der Cursor in MySQLdb implementiert ist, ist connect () die Option für die Verbindung. Seien Sie vorsichtig, denn hier macht es süchtig! (Obwohl ich connect () verwende, gibt es viele Trap-Beispiele, bei denen der Variablenname connection ist!)

Wie auch immer, es ist SELECT, nenne es SELECT!

Wenn Sie eine Verbindung herstellen können, versuchen wir es so schnell wie möglich mit der SELECT-Anweisung. Danach werde ich unter der Annahme schreiben, dass es ein verbundenes conn-Objekt gibt.

cursor = conn.cursor()
try:
  cursor.execute('select * from hoge_table where id=1')
  result = cursor.fetchall()
finally:
  cursor.close()
  conn.close()

Was ist ein Cursor? Ein Konzept, das nicht mit einem Wort gesagt werden kann. Wirklich ein Konzept. Einige Leute erklären, dass es sich um einen virtuellen Bereich handelt, in dem mehrere Vorgänge in der Datenbank nacheinander ausgeführt werden können. Denken Sie so darüber nach. Wenn Sie es richtig wissen wollen, gehen Sie im Netz ans Meer! Sie können SQL mit conn.query ('select ~') ausgeben, ohne es zu verwenden. Da es nicht möglich ist, Transaktionen für mehrere Operationen auszuführen, werden häufig Cursor für DB-Operationen verwendet.

Darüber hinaus kann die SQL-Anweisung nicht nur durch Ausgabe als Objekt, sondern als Ergebnismenge abgerufen werden. Du musst es bekommen. Das wird cursor.fetchall () sein. Es gibt auch fetchone () und fetchmany (), aber ich denke, Sie können sie bei Bedarf richtig verwenden.

Die abgerufenen Daten sind beispielsweise eine Tabelle hoge_table

id name hoge
1 hogee Es ist hoge
2 hogege Es ist hoge?

damit,

cursor.execute('select * from hoge_table')
result = cursor.fetchall()

Wenn Sie nehmen (grob weggelassen), ist der Inhalt des Ergebnisses

((1, 'hogee', 'Es ist hoge'), (2, 'hogege', 'Es ist hoge?'))

Es wird sein. e? Wie lautet der Spaltenname? Sie könnten gedacht haben, ** Es ist süß ** Vielen Dank an O / R Mapper und erstellen Sie Ihre eigene Liste mit Spaltennamen.

Schließlich gibt die finally-Klausel den Cursor und die Verbindung frei. ** Bukkake mit Klausel ** Es ist jedoch kein Verlust, es als Methode zu kennen. In anderen Sprachen muss ich es selbst schreiben. ~~ Nun, es bricht nicht so sehr, auch wenn ich es nicht veröffentliche! ~~ Es ist die Pflicht des Programmierers, wertvolle Ressourcen unverzüglich freizugeben

Also gut, dann UPDATE!

Lassen Sie uns als nächstes aktualisieren. Wäre es nicht praktisch, wenn wir Batch-Updates mit Batch-Verarbeitung von Python-Skripten durchführen könnten?

conn = MySQLdb.connect(host='hoge_host', user='hoge_user', passwd='hogehoge', db='hoge1')
conn.autocommit(False)

cursor = conn.cursor()
try:
  cursor.execute('update hoge_table set hoge="Es ist hoge!" where id=1')
  cursor.execute('select * from hoge_table')
  result = cursor.fetchall()
  conn.commit()
except Exception as e:
  conn.rollback()
  raise e
finally:
  cursor.close()
  conn.close()

In der zweiten Zeile wird das automatische Festschreiben auf "Falsch" gesetzt, aber es ist sicherlich die Standardeinstellung "Falsch". Es ist daher nicht erforderlich zu sagen, dass dies nicht erforderlich ist. Nun, es kann vom Connector abhängen, daher ist es sicherer, ihn explizit auf False zu setzen. Wenn Sie es auf True setzen, wird es ohne Erlaubnis festgeschrieben (das ist richtig). Wenn False, rufen Sie commit () selbst auf. Wir rufen auch selbst rollback () auf. Es ist sicherer, so viel Zeit und Mühe zu investieren, wenn Sie dies hinter den Kulissen tun können.

Die SELECT-Anweisung wird in der Zeile nach der UPDATE-Anweisung ausgegeben. Dies kann jedoch die Validierung des Aktualisierungsergebnisses sein. Damit können Sie es schaffen! Dies ist ein Beispiel. Wenn Ihnen das Ergebnis nicht gefällt, machen Sie eine Ausnahme und lassen Sie es zurücksetzen. Da dieser Bereich nicht ohne Verwendung eines Cursors erstellt werden kann, ist connect () weiterhin eine Option. Dies wird in der Datenbank durch Aufrufen der Funktion commit () widergespiegelt.


Das ist alles für diese Zeit. Damit plötzlich DB-Betrieb ohne O / R-Mapper Selbst wenn eine Aufgabe eingeht, können wir sie erledigen. Auch die Tatsache, dass das Framework normalerweise in Ihrem Namen handelt, ist eine Frage des Inhalts. Ich denke, dass das Wissen darüber zum weiteren Verständnis beiträgt.

"Warte eine Minute! Es gibt kein EINFÜGEN oder LÖSCHEN"

Was zu tun ist, unterscheidet sich nicht wesentlich von UPDATE, daher wird es weggelassen

"Warte eine Minute! Es gibt keine ÄNDERUNG"

Müssen Sie es mit einem Skript tun?

Recommended Posts

Lassen Sie uns MySQL-Daten mit Python bearbeiten
Empfangen Sie Textdaten von MySQL mit Python
Datenanalyse mit Python 2
Mach Houdini mit Python3! !! !!
Datenmanipulation mit Pandas!
Datenanalyse mit Python
Web Scraping mit Python (Wettervorhersage)
Web Scraping mit Python (Aktienkurs)
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Schreiben wir Python mitinema4d.
Lassen Sie uns R-CNN mit Sklearn-theano machen
Manipulation regulärer Ausdrücke durch Python
Lassen Sie uns Git-Cat mit Python bauen
Verbindungspooling mit Python + MySQL
Lesen von JSON-Daten mit Python
Hinweise zum Importieren von Daten aus MySQL oder CSV mit Python
Grundlegende Zusammenfassung der Datenoperationen mit Python Pandas - Erste Hälfte: Datenerstellung und -operationen
Lassen Sie uns eine GUI mit Python erstellen.
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
[Python] Mit DataReader Wirtschaftsdaten abrufen
Lass uns mit Python mit Python spielen [Anfänger]
Schwanzrekursion mit Python2 durchführen
Python-Datenstruktur mit Chemoinfomatik gelernt
Was tun mit PYTHON Release?
Visualisieren Sie Ihre Daten ganz einfach mit Python Seaborn.
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Verarbeiten Sie Pubmed .xml-Daten mit Python
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Lassen Sie uns die Stimme mit Python # 1 FFT analysieren
Anwendung von Python: Datenbereinigung Teil 2: Datenbereinigung mit DataFrame
Python | Was Sie mit Python machen können
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Datenpipeline-Aufbau mit Python und Luigi
INSERT in MySQL mit Python [Für Anfänger]
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Verarbeiten Sie Pubmed .xml-Daten mit Python [Teil 2]
Holen Sie sich Lebensmitteldaten mit Amazon API (Python)
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Generieren Sie japanische Testdaten mit Python faker
Erstellen wir mit Python eine kostenlose Gruppe
Konvertieren Sie Excel-Daten mit Python in JSON
Lassen Sie Heroku die Hintergrundverarbeitung mit Python durchführen
Laden Sie japanische Aktienkursdaten mit Python herunter
[Einführung in Python] Verwenden wir foreach mit Python
Lesen wir die RINEX-Datei mit Python ①
Bearbeiten von DynamoDB-Daten mit Lambda (Node & Python)
Lassen Sie uns mit Python langsam sprechen
Wie man einen Taschentest mit Python macht
[Python] Kapitel 04-02 Verschiedene Datenstrukturen (Listenmanipulation)
[Python] Lassen Sie uns matplotlib mit Japanisch kompatibel machen
Debuggen Sie die MySQL-Verbindung mit Python MySQL.connector
[Python] Kapitel 04-07 Verschiedene Datenstrukturen (Wörterbuchmanipulation)
Datenanalyse beginnend mit Python (Datenvorverarbeitung - maschinelles Lernen)
Organisieren Sie mit Python nach Ordnern getrennte Daten