Acceder a MSAccess desde Python o PHP
April 2nd, 2008 | by necudeco |Hoy me llego una pregunta interesante:
Me gustaría saber si hay alguna forma de acceder para leer y/o escribir a una base de datos access97 desde gnu/linux (ubuntu) con python.
Yo sabia, que para hacer ciertas cosas particularmente con Office, se requeria una libreria pywin32 que solo esta disponible obviamente en Windows ( de momento dejaremos de la lado la posibilidad de emularla mediante wine ).
Asi que lo primero que se me cruzo por la mente, era accederla mediante ODBC. Este procedimiento es sencillo, crear un ODBC en la maquina con Windows y leerlo con python desde Linux. Pero tener una maquina de servidor con Windows no me hacia gracia.
Asi que navegando por la red, encontre varios proyectos para crear ODBC en Linux. Asi pues, el procedimiento seria:
- Instalar algun driver ODBC
- Registrar el archivo access como fuente ODBC
- Abrir una conexion de datos desde python ( php ) pasando como parametro un DSN valido
- Realizar nuestro trabajo y cerrar la conexion.
Para instalar el ODBC, ejecutamos ( en gentoo )
emerge unixODBC
y
USE=”odbc” emerge mdbtools
mdbtools, son los drivers para acceder a msaccess. unixODBC te preguntara por ellos mas adelante.
Ahora hay que registrar DSN para nuestra base de datos.
Para eso, ejecutamos como root ODBCConfig
Aca puedes escoger, entre crear un DSN para el Usuario ( User DSN ), un DSN para todos los usuarios del sistema ( System DSN ) y uno para las maquinas de la red ( File DSN )
Una vez, registrado el driver y la base de datos access procedemos a establecer la conexion desde python ( php )
Conexion PHP $dsn = ‘mysql://root:pwd@localhost/mydb’; $db = NewADOConnection($dsn); if (!$db) die(”Connection failed”);
Conexion Python
import adodb
conn = adodb.NewADOConnection('access') # mxodbc required
dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=d:\\inetpub\\adodb\\northwind.mdb;"
conn.Connect(dsn)
Bueno, y el resto ya depende de nuestra aplicacion especifica. Espero que les sea de utilidad.






3 Responses to “Acceder a MSAccess desde Python o PHP”
By Dani on Apr 20, 2008 | Reply
Hola:
Soy el que preguntó esto en la lista.
Primero muchas gracias por la respuesta.
Hasta hoy no he podido probarlo, tube que reinstalar mi sistema gnulinux.
No soy capar de seguir los pasos que indicas, en mi caso ubuntu.
He instalado el unixodbc y el mdbtools, hasta aquí todo bien.
en ubuntu esto no se como se hace
emerge unixODBC
USE=”odbc” emerge mdbtools
yo he instalado el unixODBC y el mdbtools desde el synaptic. Tengo que hacer algo mas?
Arranco el unixODBC con sudo ODBCconfig, ahora mis dudas son, como configuro mi base de datos?
Usuario o sistema?
Podrías poner un ejemplo completo?
En el ejemplo de nocexión con python aparece
# mxodbc required
es necesario instalar mxodbc?
en caso afirmativo, que tendría que configurar?
Perdona por preguntar tanto, he estado buscado y no doy con la solución.
Saludos y muchas gracias.
dani
By necudeco on Apr 20, 2008 | Reply
emerge es el sistema de instalacion de gentoo ( yo uso esa distribucion ). En ubuntu es sudo aptitude install …
sudo aptitude install unixODBC mdbtools
No es necesario instalar nada mas.
Si, el unixODBC lo arrancas con sudo.
Usuario o Sistema, me parece que lo explique en el post … pero tal vez fui demasiado generico. Si estas haciendo pruebas hazlo como usuario. La diferencia es la misma que cuando instalas un programa en windows y te dice:
Instalar para todos los usuarios (Sistema)
Instalar para el usuario actual (Usuario)
Espero, te sirva … si tenes algun problema pasa por aca y vemos como lo resolvemos.
Saludos