Nous avons résumé comment utiliser le package cx_Oracle dans Python3. Avec cela, je pense que nous pouvons faire du développement.
Il est important de le dire en premier, mais il est préférable de consulter la documentation officielle. Document officiel cx_Oracle
PowerShell
pip install cx_Oracle
** Lorsqu'une erreur survient ** Étant donné que Windows n'est pas fourni avec un compilateur C en standard, une erreur incluant le message suivant peut se produire lors de l'installation avec pip.
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/
Dans ce cas, vous devez installer «Build Tools for Visual Studio 2019» sur la page de téléchargement de Visual Studio. (Au 23 novembre 2019) [Configuration minimale requise] Charge de travail ・ Outils de construction C ++ Facultatif ・ MSVC v142 - Outil de construction VS 2019 C ++ x64 / x86 ・ SDK Windows 10
connect.py
#Importation de package
import cx_Oracle
HOST = "localhost"
PORT = 1521
SVC_NM = "hoge.example.com"
#Générer un descripteur de connexion
dsn = cx_Oracle.makedsn(HOST, PORT, service_name = SVC_NM)
#Établir une connexion
connection = cx_Oracle.connect(USER, PASS, dsn, encoding = "UTF-8")
#Traitement tel que l'émission SQL...
#Libérez la connexion
connection.close()
import cx_Oracle
HOST = "localhost"
PORT = 1521
# SID(Identifiant d'instance)Lors de l'utilisation
SID = "hoge"
dsn = cx_Oracle.makedsn(HOST, PORT, sid = SID)
# SERVICE_NAME(Nom du service)Lors de l'utilisation
SVC_NM = "hoge.example.com"
dsn = cx_Oracle.makedsn(HOST, PORT, service_name = SVC_NM)
# NET_SERVICE_NAME(Nom du service réseau, identifiant de connexion)Lors de l'utilisation
NET_SN = "hogenet"
dsn = cx_Oracle.makedsn(HOST, PORT, NET_SN)
#Descripteur de connexion généré(Exemple: SERVICE_NAME)
print(dsn)
# >> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=hoge.example.com)))
cx_Oracle.makedsn() Renvoie l'identifiant de connexion basé sur les paramètres passés dans l'argument.
** * Lors de l'utilisation du nom du service réseau (identifiant de connexion) ** Il est nécessaire de configurer au préalable tnsnames.ora côté client.
#Établir une connexion
connection = cx_Oracle.connect(USER, PASS, dsn, encoding = "UTF-8")
#Traitement tel que l'émission SQL...
#Libérez la connexion
connection.close()
Vous pouvez utiliser la syntaxe with pour libérer automatiquement une connexion lorsque vous quittez le bloc with. Sauf raison particulière, je pense personnellement que c'est mieux.
with cx_Oracle.connect(USER, PASS, dsn, encoding = "UTF-8") as connection:
#Traitement tel que l'émission SQL...
# connection.close()Pas besoin de décrire
query.py
#Génération de curseur
cursor = connection.cursor()
#Variable de liaison
sql = "select * from countries where country_id = :id"
bind_data = { id: 1 }
#Émission SQL
cursor.execute(sql, bind_data)
#L'acquisition des données
rows = cursor.fetchall()
#Changer la valeur pour lier
bind_data["id"] = 2
#Émission SQL(Perspective douce)
cursor.execute(sql, bind_data)
#Relâcher le curseur
cursor.close()
#Génération de curseur
cursor = connection.cursor()
#Relâcher le curseur
cursor.close()
Comme une connexion, elle peut être libérée automatiquement avec la syntaxe with. Sauf si vous avez une raison spécifique, nous vous le recommandons également.
with connection.cursor() as cursor:
#Émission SQL, etc....
# cursor.close()Pas besoin de décrire
#Variable de liaison(Espace réservé)
sql = "select country_id, country_name from countries where country_id = :id"
#Définition de la valeur à lier
#Pour le type de dictionnaire
bind_data = { id: 1 }
#Pour le type de liste
bind_data = [1]
Sorte de dictionnaire | Type de liste |
---|---|
Une valeur qui correspond à la variable de liaison et à la clé est attribuée | Les valeurs sont attribuées dans l'ordre de placement des variables de liaison depuis le début de SQL |
cursor.execute(sql, bind_data)
#Les arguments de mots-clés sont également possibles
cursor.execute(sql, id = 1)
#Réédition SQL en modifiant la valeur de la variable de liaison
bind_data["id"] = 2
cursor.execute(sql, bind_data)
*** PARSE SOFT * ** Le SQL émis est analysé par l'analyseur et mis en cache dans un pool partagé (HARD PARSE). Dans l'analyse logicielle, on peut s'attendre à une amélioration des performances en réutilisant les résultats d'analyse mis en cache dans le pool partagé.
#Obtenez un enregistrement à la fois à partir du curseur
row = cursor.fetchone()
print(row)
# >> (1, Japan)
#Obtenez n'importe quel nombre d'enregistrements du curseur(Exemple:10 enregistrements)
numRows = 10
rows = cursor.fetchmany(numRows)
print(rows)
# >> [(1, Japan)]
#Récupérer tous les enregistrements du curseur
rows = cursor.fetchall()
print(rows)
# >> [(1, Japan)]
transaction.py
#Lancement de transaction explicite
connection.begin()
#Émission SQL
cursor.execute(
"insert into countries (country_id, country_name) values (:id, :name))",
id = 2, name = "United States"
)
#commettre
connection.commit()
#retour en arriere
connection.rollback()
#Optionnel
connection.begin()
Oracle Database démarre automatiquement une transaction lorsque le premier SQL est exécuté, vous n'avez donc pas besoin de démarrer explicitement une transaction, sauf si vous avez une raison spécifique de le faire.
#commettre
connection.commit()
#retour en arriere
connection.rollback()
Si la connexion à la base de données est fermée sans validation, la transaction sera annulée.
Cliquez ici pour créer un environnement de développement Python3! [Python3] Construction de l'environnement de développement << Édition Windows >>
Il existe également une feuille de triche Python3! [Python3] Aide-mémoire Python pour les autres ingénieurs de langage << Bases >> [Python3] Aide-mémoire Python pour les autres ingénieurs de langage << Orienté objet >>
Recommended Posts