Wir haben zusammengefasst, wie das cx_Oracle-Paket in Python3 verwendet wird. Ich denke, wir können damit etwas entwickeln.
Es ist wichtig, zuerst zu sagen, aber es ist am besten, die offizielle Dokumentation zu lesen. Offizielles Dokument von cx_Oracle
PowerShell
pip install cx_Oracle
** Wenn ein Fehler auftritt ** Da Windows standardmäßig nicht mit einem C-Compiler geliefert wird, kann bei der Installation mit pip ein Fehler mit der folgenden Meldung auftreten.
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/
In diesem Fall müssen Sie "Build Tools for Visual Studio 2019" auf der Downloadseite von Visual Studio installieren. (Stand 23. November 2019) [Erforderliche Mindestkonfiguration] Arbeitsbelastung ・ C ++ Build Tools Optional ・ MSVC v142 - VS 2019 C ++ x64 / x86-Build-Tool ・ Windows 10 SDK
connect.py
#Paketimport
import cx_Oracle
HOST = "localhost"
PORT = 1521
SVC_NM = "hoge.example.com"
#Verbindungsdeskriptor generieren
dsn = cx_Oracle.makedsn(HOST, PORT, service_name = SVC_NM)
#Verbindung herstellen
connection = cx_Oracle.connect(USER, PASS, dsn, encoding = "UTF-8")
#Verarbeitung wie SQL-Ausgabe...
#Lösen Sie die Verbindung
connection.close()
import cx_Oracle
HOST = "localhost"
PORT = 1521
# SID(Instanzkennung)Beim Benutzen
SID = "hoge"
dsn = cx_Oracle.makedsn(HOST, PORT, sid = SID)
# SERVICE_NAME(Dienstname)Beim Benutzen
SVC_NM = "hoge.example.com"
dsn = cx_Oracle.makedsn(HOST, PORT, service_name = SVC_NM)
# NET_SERVICE_NAME(Netzdienstname, Verbindungskennung)Beim Benutzen
NET_SN = "hogenet"
dsn = cx_Oracle.makedsn(HOST, PORT, NET_SN)
#Generierter Verbindungsdeskriptor(Beispiel: SERVICE_NAME)
print(dsn)
# >> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=hoge.example.com)))
cx_Oracle.makedsn() Gibt die Verbindungskennung basierend auf den im Argument übergebenen Parametern zurück.
** * Bei Verwendung des Netzdienstnamens (Verbindungskennung) ** Es ist erforderlich, tnsnames.ora auf der Clientseite im Voraus zu konfigurieren.
#Verbindung herstellen
connection = cx_Oracle.connect(USER, PASS, dsn, encoding = "UTF-8")
#Verarbeitung wie SQL-Ausgabe...
#Lösen Sie die Verbindung
connection.close()
Sie können die with-Syntax verwenden, um eine Verbindung automatisch freizugeben, wenn Sie den with-Block verlassen. Sofern es keinen besonderen Grund gibt, denke ich persönlich, dass dies besser ist.
with cx_Oracle.connect(USER, PASS, dsn, encoding = "UTF-8") as connection:
#Verarbeitung wie SQL-Ausgabe...
# connection.close()Keine Notwendigkeit zu beschreiben
query.py
#Cursorgenerierung
cursor = connection.cursor()
#Bindungsvariable
sql = "select * from countries where country_id = :id"
bind_data = { id: 1 }
#SQL-Ausgabe
cursor.execute(sql, bind_data)
#Datenerfassung
rows = cursor.fetchall()
#Ändern Sie den zu bindenden Wert
bind_data["id"] = 2
#SQL-Ausgabe(Weiche Perspektive)
cursor.execute(sql, bind_data)
#Lassen Sie den Cursor los
cursor.close()
#Cursorgenerierung
cursor = connection.cursor()
#Lassen Sie den Cursor los
cursor.close()
Wie eine Verbindung kann sie automatisch mit der with-Syntax freigegeben werden. Sofern Sie keinen bestimmten Grund haben, empfehlen wir dies ebenfalls.
with connection.cursor() as cursor:
#SQL-Ausgabe usw....
# cursor.close()Keine Notwendigkeit zu beschreiben
#Bindungsvariable(Platzhalter)
sql = "select country_id, country_name from countries where country_id = :id"
#Definition des zu bindenden Wertes
#Für Wörterbuchtyp
bind_data = { id: 1 }
#Für Listentyp
bind_data = [1]
Wörterbuchtyp | Listentyp |
---|---|
Ein Wert, der der Bindevariablen und dem Schlüssel entspricht, wird zugewiesen | Die Werte werden ab dem Beginn von SQL in der Reihenfolge der Platzierung der Bindungsvariablen zugewiesen |
cursor.execute(sql, bind_data)
#Schlüsselwortargumente sind ebenfalls möglich
cursor.execute(sql, id = 1)
#SQL-Neuausgabe durch Ändern des Werts der Bindevariablen
bind_data["id"] = 2
cursor.execute(sql, bind_data)
*** SOFT PARSE * ** Die ausgegebene SQL wird vom Parser analysiert und in einem gemeinsam genutzten Pool (HARD PARSE) zwischengespeichert. Beim Soft-Parsing kann eine Leistungsverbesserung erwartet werden, indem die im gemeinsam genutzten Pool zwischengespeicherten Analyseergebnisse wiederverwendet werden.
#Holen Sie sich jeweils einen Datensatz aus dem Cursor
row = cursor.fetchone()
print(row)
# >> (1, Japan)
#Holen Sie sich eine beliebige Anzahl von Datensätzen aus dem Cursor(Beispiel:10 Datensätze)
numRows = 10
rows = cursor.fetchmany(numRows)
print(rows)
# >> [(1, Japan)]
#Holen Sie sich alle Datensätze vom Cursor
rows = cursor.fetchall()
print(rows)
# >> [(1, Japan)]
--Daten werden als Taple aus dem Cursor abgerufen
transaction.py
#Explizite Transaktionsinitiierung
connection.begin()
#SQL-Ausgabe
cursor.execute(
"insert into countries (country_id, country_name) values (:id, :name))",
id = 2, name = "United States"
)
#verpflichten
connection.commit()
#zurückrollen
connection.rollback()
#Optional
connection.begin()
Oracle Database startet automatisch eine Transaktion, wenn das erste SQL ausgeführt wird. Sie müssen eine Transaktion also nicht explizit starten, es sei denn, Sie haben einen bestimmten Grund dafür.
#verpflichten
connection.commit()
#zurückrollen
connection.rollback()
Wenn die Datenbankverbindung ohne Festschreiben geschlossen wird, wird die Transaktion zurückgesetzt.
Klicken Sie hier, um eine Python3-Entwicklungsumgebung zu erstellen! [Python3] Aufbau der Entwicklungsumgebung << Windows Edition >>
Es gibt auch einen Python3-Spickzettel! [Python3] Python-Spickzettel für andere Sprachingenieure << Grundlagen >> [Python3] Python-Spickzettel für andere Sprachingenieure << Objektorientiert >>
Recommended Posts