Cómo acceder a un servidor de base de datos Oracle con Python y la librería oracledb de forma nativa, sin instalar software Oracle Client. Mostramos ejemplos de ejecución de consultas SQL de SELECT, INSERT, UPDATE y DELETE.

Requisitos para acceder a servidor Oracle Database con Python

Necesitaremos disponer de Python instalado en el equipo y un IDE de desarrollo (puede usarse un editor de texto plano, pero un IDE nos ayudará a programar sin errores y a compilar los programas). En el siguiente artículo explicamos cómo instalar Python y el IDE Visual Studio Code:

En este caso accederemos a base de datos Oracle, por lo que necesitaremos instalar el paquete oracledb en Python. Para instalarlo es suficiente con abrir una ventana de MS-DOS (si estamos trabajando en Windows) o de shell de comandos (si estamos trabajando en Linux), y ejecutaremos el siguiente comando:

Como es lógico, deberemos disponer de un servidor con Oracle Database. Para la realización de este tutorial hemos usado un servidor Oracle 21c, desplegado en Docker, como indicamos en el siguiente tutorial:

Para el ejemplo usaremos la tabla ALBARANES del usuario usrfacturas. En el siguiente enlace mostramos cómo crearla en Oracle:

Código fuente Python para acceso a servidor Oracle y ejecución de consultas SQL SELECT, INSERT, UPDATE, DELETE

Mostramos a continuación el código fuente completo de un script Python que solicita al usuario los datos de conexión al servidor Oracle (IP, nombre de la instancia, puerto, usuario, contraseña y modo de conexión SYSDBA o normal). El script conectará con el servidor de Oracle y ejecutará una consulta SQL SELECT de la tabla ALBARANES, mostrando sus primeros 10 registros por pantalla:

La ejecución del código Python anterior devolverá los 10 primeros registros de la tabla ALBARANES con sus campos CÓDIGO, CÓDIGO CLIENTE, IMPORTE y FECHA:

Devolverá también los registros de la tabla ALBARANES que cumplan el filtro de IMPORTE >=1500:

Para las consultas de INSERT, UPDATE y DELETE, devolverá el número de registros afectados en cada una: