sqlalchemy es un set de herramientas SQL y un ORM (Object Relational Mapper) para python y soporta varios tipos de bases de datos como: mysql, oracle, drizzle, postgresql, etc. Podéis ver la lista completa aquí: http://www.sqlalchemy.org/docs/core/engines.html
Instalamos los paquetes necesarios:
su aptitude install python-sqlalchemy alien libaio1 exit
Comando para saber que versión de python tenemos:
python -V
Ejemplo respuesta:
Python 2.7.2+
Para saber que versión de bases de datos tenemos ejecutamos la siguente query:
select * from product_component_version;
Ejemplo respuesta:
NLSRTL 11.2.0.2.0 Production Oracle Database 11g Enterprise Edition 11.2.0.2.0 64bit Production PL/SQL 11.2.0.2.0 Production TNS for 64-bit Windows: 11.2.0.2.0 Production
En nuestro caso usamos: python 2.7 y oracle 11.2
En la siguiente web encontraremos los paquetes necesarios de oracle para python:
http://cx-oracle.sourceforge.net/
En nuestro caso en el apartado: “Download 5.1.1 released October 10, 2011″
CentOS 5 x86_64 RPM (Oracle 11g, Python 2.7)
Para pasar los RPM-s a DEB:
su alien -d cx_Oracle-5.1-11g-py27-1.x86_64.rpm ls | grep .deb$ cx-oracle_5.1-2_amd64.deb
Instalamos el paquete:
dpkg -i cx-oracle_5.1-2_amd64.deb ln -s /usr/lib/python2.7/site-packages/cx_Oracle.so /usr/lib/python2.7/dist-packages/cx_Oracle.so exit
Creamos un script de ejemplo:
nano prueba.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
connection = create_engine('oracle://USER:PASSWD@IP:PORT/DDBB').connect()
result = connection.execute("select * from product_component_version")
for v in result:
for column, value in v.items():
print('{0}: {1}'.format(column, value))
connection.close()
Damos permisos de ejecución al script:
chmod +x prueba.py
y lo ejecutamos:
./prueba.py
ERROR:
ImportError: /usr/lib/python2.7/dist-packages/cx_Oracle.so: undefined symbol:PyUnicodeUCS2_AsEncodedString
Para arreglar ese error lo he conseguido instalando una versión anterior, del apartado:
“Download 5.1 released March 19, 2011″ el paquete:
CentOS 5 x86_64 RPM (Oracle 11g, Python 2.7)
Para desinstalar la anterior versión:
su aptitude purge cx-oracle rm -rf /usr/lib/python2.7/dist-packages/cx_Oracle.so exit
y seguimos los pasos que hemos dicho anteriormente.
Ejemplo del script bien ejecutado:
product: NLSRTL version: 11.2.0.2.0 status: Production product: Oracle Database 11g Enterprise Edition version: 11.2.0.2.0 status: 64bit Production product: PL/SQL version: 11.2.0.2.0 status: Production product: TNS for 64-bit Windows: version: 11.2.0.2.0 status: Production


















