[PYTHON] [Cx_Oracle Primer] (Partie 3) Bases de la navigation dans les tableaux

Environnement de vérification

--Utilisation d'Oracle Cloud

Bases du traitement SELECT

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')

Objet curseur et avec syntaxe

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)

Notation d'inclusion de liste

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']

Recommended Posts

[Cx_Oracle Primer] (Partie 3) Bases de la navigation dans les tableaux
[Introduction à cx_Oracle] (Partie 11) Bases de l'exécution PL / SQL
[Introduction à cx_Oracle] (Partie 2) Principes de base de la connexion et de la déconnexion à Oracle Database
[Introduction à cx_Oracle] (Partie 7) Gestion des variables de liaison
[Introduction à cx_Oracle] Présentation de cx_Oracle
[Introduction à cx_Oracle] (Partie 4) Récupération et défilement du jeu de résultats
[Introduction au Data Scientist] Bases de Python ♬
[Introduction à cx_Oracle] (16ème) Gestion des types LOB
Introduction à PyQt4 Partie 1
[Introduction à cx_Oracle] (5e) Gestion des données japonaises
[Introduction à cx_Oracle] (13e) Connexion utilisant le pool de connexions (côté client)
Introduction à la détection des anomalies 1 principes de base
[Introduction à cx_Oracle] (8e) version de cx_Oracle 8.0
Introduction à Ansible Part «Inventaire»
Série: Introduction à cx_Oracle Contents
Principes de base de Python x SIG (1)
Introduction à Ansible Part ④'Variable '
[Introduction à cx_Oracle] (Partie 6) Mappage des types de données DB et Python
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
Principes de base de Python x SIG (3)
Introduction à Ansible Partie 2 'Grammaire de base'
Introduction à Python Hands On Partie 1
Principes de base de Python x SIG (partie 2)
Introduction à Ansible Partie 1 Hello World !! '
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
[Introduction to Data Scientists] Bases de Python ♬ Branchements conditionnels et boucles
[Introduction aux Data Scientists] Bases de Python ♬ Fonctions et fonctions anonymes, etc.
Web-WF Python Tornado Partie 3 (Introduction à Openpyexcel)
[Introduction à cx_Oracle] (12e) Gestion des exceptions DB
[Introduction à cx_Oracle] (17e) Gestion du type de date
[Introduction aux data scientists] Bases de la probabilité et des statistiques ♬ Variable de probabilité / probabilité et distribution de probabilité
Jupyter Notebook Principes d'utilisation
Bases de PyTorch (1) -Comment utiliser Tensor-
Introduction à Scapy ① (De l'installation à l'exécution de Scapy)
Kaggle: Introduction à l'ingénierie manuelle des fonctionnalités, partie 1
[Introduction à cx_Oracle] (Partie 9) Mappage des types de données DB et Python (version 8 ou ultérieure)
[Introduction à Udemy Python3 + Application] 26. Copie du dictionnaire
Bases de l'apprentissage avec un enseignant Partie 1-Régression simple- (Remarque)
[Introduction à Udemy Python3 + Application] 19. Copie de la liste
De l'introduction de pyethapp à l'exécution du contrat
Bases de l'apprentissage avec un enseignant Partie 3-Régression multiple (mise en œuvre) - (Notes) -
[Introduction à Python] Utilisation de base des expressions lambda
Introduction à MQTT (Introduction)
Introduction à Scrapy (1)
Premiers pas avec Supervisor
Introduction de scikit-Optimize
Introduction à Tkinter 1: Introduction
Introduction de PyGMT
Introduction à PyQt
Introduction à Scrapy (2)
Les bases de Python ①
Bases de python ①
[Linux] Introduction à Linux
Introduction à l'apprentissage automatique ~ Montrons le tableau de la méthode du K plus proche voisin ~ (+ gestion des erreurs)
Introduction à Scrapy (4)
Introduction à discord.py (2)
Introduction de Python
Traitement d'image par matrice Basics & Contents-Reinventor of Python image processing-