--Utilisation d'Oracle Cloud
Pour émettre des instructions SQL, non limitées à SELECT, vous devez d'abord créer un objet Curosr sous la forme suivante.
cursor = connection.cursor()
Continuez, par exemple
cursor.execute("select sysdate from dual")
Et, avec l'instruction SELECT comme argument, appelez la méthode execute () de l'objet Curosr. En bouclant le résultat de l'appel avec une instruction for, l'enregistrement est récupéré sous la forme d'un taple. Enfin, l'objet Curosr
cursor.close()
Fermer avec. Vous trouverez ci-dessous un exemple d'exécution. La vue ALL_OBJECTS étant récupérée dans l'ordre OBJECT_ID, si vous avez une certaine expérience de l'exécution de l'application cx_Oracle, elle fonctionnera sans aucune préparation particulière.
sample03a.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cx_Oracle
USERID = "admin"
PASSWORD = "FooBar"
DESTINATION = "atp1_low"
SQL = """
select object_id, owner, object_name, object_type
from all_objects
order by object_id
fetch first 5 rows only
"""
with cx_Oracle.connect(USERID, PASSWORD, DESTINATION) as connection:
cursor = connection.cursor()
cursor.execute(SQL)
for row in cursor:
print(row)
cursor.close()
Dans mon environnement, le résultat est le suivant.
$ python sample03a.py
(2, 'SYS', 'C_OBJ#', 'CLUSTER')
(3, 'SYS', 'I_OBJ#', 'INDEX')
(4, 'SYS', 'TAB$', 'TABLE')
(5, 'SYS', 'CLU$', 'TABLE')
(6, 'SYS', 'C_TS#', 'CLUSTER')
L'exemple ci-dessus utilise la syntaxe with uniquement pour l'objet Connection, mais l'objet Curosr prend également en charge la syntaxe with. Par conséquent, si vous réécrivez les 6 dernières lignes de l'exemple ci-dessus comme suit, ce sera un codage plus sûr avec une quantité de description plus simple et moins de problèmes tels qu'un nombre insuffisant de curseurs (ORA-1000). En prime, j'ai également raccourci la partie émission SQL.
sample03b.py(Extrait)
with cx_Oracle.connect(USERID, PASSWORD, DESTINATION) as connection:
with connection.cursor() as cursor:
for row in cursor.execute(SQL):
print(row)
Si vous souhaitez gérer l'ensemble de résultats sous forme de liste, vous pouvez également utiliser la notation d'inclusion de liste comme suit. En fonction de l'environnement, le module pprint doit être pré-installé afin d'exécuter l'exemple ci-dessous.
sample03c.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cx_Oracle
import pprint
USERID = "admin"
PASSWORD = "FooBar"
DESTINATION = "atp1_low"
SQL = """
select object_id, owner, object_name, object_type
from all_objects
order by object_id
fetch first 5 rows only
"""
with cx_Oracle.connect(USERID, PASSWORD, DESTINATION) as connection:
with connection.cursor() as cursor:
pprint.pprint([f"{r[1]}.{r[2]}Est{r[3]}(ID:{r[0]})est" for r in cursor.execute(SQL)])
$ python sample03c.py
['SYS.C_OBJ#Est CLUSTER(ID:2)est',
'SYS.I_OBJ#Est INDEX(ID:3)est',
'SYS.TAB$Est TABLE(ID:4)est',
'SYS.CLU$Est TABLE(ID:5)est',
'SYS.C_TS#Est CLUSTER(ID:6)est']