--Utilisation d'Oracle Cloud
Identique à l'instruction SELECT de base, exécutez l'instruction SQL avec la méthode execute () de l'objet Cursor. Voici un exemple.
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())
La gestion des variables de liaison est fondamentalement la même que 7th. Voici un exemple. On suppose que le sample10a.py ci-dessus est exécuté.
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)
La méthode executemany () sur la deuxième ligne à partir du bas exécute le PreparedStatement pour le nombre d'éléments dans la liste du deuxième paramètre, comme vous pouvez l'imaginer d'après l'utilisation.
La valeur NULL de DB correspond à None sur Python. Si vous souhaitez stocker NULL, définissez la variable de liaison sur Aucun. Si vous SELECT une valeur NULL, None est stocké dans la variable.
Jusqu'à présent, nous n'avons vu que des exemples de variables de liaison qui transmettent des valeurs à SQL. En réalité, il existe également des variables de liaison reçues de SQL. Dans ce cas, vous pouvez utiliser la méthode var de l'objet Cursor pour créer une variable Python qui agit comme une variable de liaison qui reçoit la valeur. Vous trouverez ci-dessous un exemple d'utilisation de variables de liaison qui reçoivent la clause RETURNING. On suppose que le sample10b.py ci-dessus est exécuté.
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)
La cinquième ligne à partir du bas est la définition des variables Python pour les variables de liaison qui reçoivent la sortie de SQL. Spécifiez le type de données Python lors de la réception de données dans l'argument de la variable var. La troisième ligne à partir du bas, getvalue (), reçoit le contenu de la variable de liaison dans la clause RETURNING de l'instruction SQL. L'argument par défaut est 0, qui spécifie la position de la variable de liaison. Comme il n'y a qu'une seule variable de liaison cette fois, 0 (première) convient. Dans cet exemple, les valeurs de colonne mises à jour qui sont imprimées sont renvoyées sous la forme d'une liste d'entiers.
La deuxième ligne à partir du bas de l'échantillon précédent est applicable. Vous pouvez obtenir le nombre de lignes mises à jour en accédant à l'attribut rowcount de l'objet Cursor dans l'exemple après avoir exécuté la mise à jour SQL. Si vous accédez à cette valeur d'attribut dans une instruction SELECT, le nombre de lignes extraites à ce moment est stocké.
Recommended Posts