[PYTHON] [Einführung in cx_Oracle] (10.) Aktualisieren Sie die DML-Anweisung und die DDL / DCL-Anweisung

Überprüfungsumgebung

Ausführung von Update-DML- und DDL / DCL-Anweisungen

Führen Sie die SQL-Anweisung wie die grundlegende SELECT-Anweisung mit der execute () -Methode des Cursor-Objekts aus. Unten ist ein Beispiel.

sample10a.py


import cx_Oracle

USERID = "admin"
PASSWORD = "FooBar"
DESTINATION = "atp1_low"
SQL1 = """
create table dept(
  deptno     number(2,0),
  dname      varchar2(14),
  loc        varchar2(13),
  constraint pk_dept primary key (deptno)
)
"""
SQL2 = "insert into dept values(10, 'ACCOUNTING', 'NEW YORK')"
SQL3 = "commit"
SQL4 = "select * from dept"

with cx_Oracle.connect(USERID, PASSWORD, DESTINATION) as connection:
        with connection.cursor() as cursor:
                cursor.execute(SQL1)
                cursor.execute(SQL2)
                cursor.execute(SQL3)
                print(cursor.execute(SQL4).fetchone())

Bindungsvariable

Die Behandlung von Bindevariablen entspricht im Wesentlichen der von 7th. Unten ist ein Beispiel. Es wird angenommen, dass das obige sample10a.py ausgeführt wird.

sample10b.py


import cx_Oracle

USERID = "admin"
PASSWORD = "FooBar"
DESTINATION = "atp1_low"
SQL1 = "insert into dept values(:deptno, :dname, :loc)"
SQL2 = "commit"
binds = [{"deptno":20, "dname":"RESEARCH", "loc":"DALLAS"},
         {"deptno":30, "dname":"SALES", "loc":"CHICAGO"}]

with cx_Oracle.connect(USERID, PASSWORD, DESTINATION) as connection:
        with connection.cursor() as cursor:
                cursor.prepare(SQL1)
                cursor.executemany(None, binds)
                cursor.execute(SQL2)

Die Methode execememany () in der zweiten Zeile von unten führt das PreparedStatement für die Anzahl der Elemente in der Liste des zweiten Parameters aus, wie Sie sich aus der Verwendung vorstellen können.

NULL-Wertbindung

Der NULL-Wert von DB entspricht None in Python. Wenn Sie NULL speichern möchten, setzen Sie die Bindungsvariable auf Keine. Wenn Sie einen NULL-Wert SELECT auswählen, wird None in der Variablen gespeichert.

Bindungsvariable als Ausgabeziel

Bisher haben wir nur Beispiele für Bindevariablen gesehen, die Werte an SQL übergeben. In der Realität gibt es auch Bindungsvariablen, die von SQL empfangen werden. In diesem Fall können Sie mit der var-Methode des Cursor-Objekts eine Python-Variable erstellen, die als Bindevariable fungiert, die den Wert empfängt. Im Folgenden finden Sie ein Beispiel für die Verwendung von Bindevariablen, die die RETURNING-Klausel erhalten. Es wird angenommen, dass das obige sample10b.py ausgeführt wird.

sample10c.py


import cx_Oracle

USERID = "admin"
PASSWORD = "FooBar"
DESTINATION = "atp1_low"
SQL1 = """
update dept set deptno = deptno + 10 where deptno > 0
returning deptno into :out_deptno
"""
SQL2 = "rollback"

with cx_Oracle.connect(USERID, PASSWORD, DESTINATION) as connection:
        with connection.cursor() as cursor:
                bind_deptno = cursor.var(int)
                cursor.execute(SQL1, out_deptno = bind_deptno)
                print(f"DEPTNO = {bind_deptno.getvalue()}")
                print(f"RowCount = {cursor.rowcount}")
                cursor.execute(SQL2)

Die fünfte Zeile von unten enthält die Definition von Python-Variablen für Bindungsvariablen, die eine Ausgabe von SQL erhalten. Geben Sie den Python-Datentyp an, wenn Sie Daten im Argument der Variablen var empfangen. Die dritte Zeile von unten, getvalue (), empfängt den Inhalt der Bindevariablen in der RETURNING-Klausel der SQL-Anweisung. Das Standardargument ist 0, das die Position der Bindevariablen angibt. Da es diesmal nur eine Bindevariable gibt, ist 0 (zuerst) in Ordnung. In diesem Beispiel werden die aktualisierten Spaltenwerte, die gedruckt werden, in Form einer Liste von Ints zurückgegeben.

Kennen Sie die Anzahl der aktualisierten Zeilen

Die zweite Zeile vom unteren Rand des vorherigen Beispiels ist anwendbar. Nach dem Ausführen der Aktualisierungs-SQL können Sie die Anzahl der aktualisierten Zeilen abrufen, indem Sie auf das Attribut rowcount des Cursor-Objekts im Beispiel zugreifen. Wenn Sie in einer SELECT-Anweisung auf diesen Attributwert zugreifen, wird die Anzahl der zu diesem Zeitpunkt abgerufenen Zeilen gespeichert.

Recommended Posts

[Einführung in cx_Oracle] (10.) Aktualisieren Sie die DML-Anweisung und die DDL / DCL-Anweisung
[Einführung in cx_Oracle] (8.) Version cx_Oracle 8.0
[Einführung in cx_Oracle] (12.) DB-Ausnahmebehandlung
[Einführung in cx_Oracle] (17.) Datumsbehandlung
[Einführung in cx_Oracle] (5.) Umgang mit japanischen Daten
[Einführung in cx_Oracle] (Teil 6) Zuordnung von DB- und Python-Datentypen
[Einführung in cx_Oracle] Übersicht über cx_Oracle
[Einführung in cx_Oracle] (Teil 4) Abrufen und Scrollen der Ergebnismenge
Serie: Einführung in den Inhalt von cx_Oracle
[Einführung in cx_Oracle] (Teil 2) Grundlagen zum Verbinden und Trennen mit Oracle Database
Einführung in Deep Learning ~ Falten und Pooling ~
[Einführung in AWS] Text-Voice-Konvertierung und Wiedergabe ♪
[Einführung in cx_Oracle] (15.) Erstellen einer Ergebnismenge in einem anderen Format als tapple