Python Language Base de données Oracle


Exemple

Conditions préalables:

Installer:

  • Installez le package cx_Oracle en tant que:

    sudo rpm -i <YOUR_PACKAGE_FILENAME>

  • Extrayez le client instantané Oracle et définissez les variables d'environnement comme suit:

ORACLE_HOME=<PATH_TO_INSTANTCLIENT>
PATH=$ORACLE_HOME:$PATH
LD_LIBRARY_PATH=<PATH_TO_INSTANTCLIENT>:$LD_LIBRARY_PATH

Créer une connexion:

import cx_Oracle

class OraExec(object):
    _db_connection = None
    _db_cur = None

    def __init__(self):
        self._db_connection = 
            cx_Oracle.connect('<USERNAME>/<PASSWORD>@<HOSTNAME>:<PORT>/<SERVICE_NAME>')
        self._db_cur = self._db_connection.cursor()

Obtenir la version de la base de données:

ver = con.version.split(".")
print ver

Sortie d'échantillon: ['12', '1', '0', '2', '0']

Exécuter la requête: SELECT

_db_cur.execute("select * from employees order by emp_id")
for result in _db_cur:
    print result

La sortie sera en tuples Python:

(10, 'SYSADMIN', 'IT-INFRA', 7)

(23, 'HR ASSOCIATE', 'HUMAN RESOURCES', 6)

Exécuter la requête: INSERT

_db_cur.execute("insert into employees(emp_id, title, dept, grade) 
                values (31, 'MTS', 'ENGINEERING', 7)
_db_connection.commit()

Lorsque vous effectuez des opérations d'insertion / mise à jour / suppression dans une base de données Oracle, les modifications sont uniquement disponibles dans votre session jusqu'à ce que la commit soit émise. Lorsque les données mises à jour sont validées dans la base de données, elles sont alors disponibles pour les autres utilisateurs et sessions.

Execute query: INSERT en utilisant les variables Bind

Référence

Les variables de liaison vous permettent de réexécuter des instructions avec de nouvelles valeurs, sans avoir à ré-analyser l'analyse. Les variables de liaison améliorent la réutilisation du code et peuvent réduire le risque d'attaques par injection SQL.

rows = [ (1, "First" ),
     (2, "Second" ),
     (3, "Third" ) ]
_db_cur.bindarraysize = 3
_db_cur.setinputsizes(int, 10)
_db_cur.executemany("insert into mytab(id, data) values (:1, :2)", rows)
_db_connection.commit()

Fermer la connexion:

_db_connection.close()

La méthode close () ferme la connexion. Toute connexion non explicitement fermée sera automatiquement libérée à la fin du script.