jueves, 18 de julio de 2013

Conectar Python con Microsoft SQL Server en OS X

En este tutorial veremos cómo conectar Python con Microsoft SQL Server en OS X. Lo primero es instalar el macports, que es para instalar otros softwares al estilo apt-get en Linux.

Bajamos el macports de su repositorio para la versión que tengamos de OSX. debemos instalar el driver freetds, es básicamente una librería que nos permitirá conectarnos a MS SQL Server. Ésta tiene dependencias univeral, odbc y mssql, se pueden instalar todas con port desde la línea de comando. Primero actualizamos a la última versión el macports e instalamos las dependencias:
Código :
$ sudo port -v selfupdate
$ sudo port install +mssql +odbc +universal


Instalamos freetds y lo mas importante la configuración de los archivos freetds.conf, odbcinst.ini y odbc.ini.
Código :
$ sudo port freetds


Los archivos de configuración los tenemos que editar con permisos de súper usuario. El/opt/local/etc/freetds/freetds.conf es donde agregamos el host del servidor MS SQL Server, basta con agregar al final del archivo lo siguiente:
Código :
[MI_SERVIDOR]
        host = MI_SERVIDOR_SQL
        port = 1433
        tds version = 7.0


El /opt/local/etc/odbcinst.ini/odbcinst.ini es donde le indicaremos el driver que utilizará la librería freetds. Este archivo normalmente esta vacío.
Código :
[FreeTDS]
Decscription = driver freetds para sql server
Driver = /opt/local/lib/libtdsodbc.so
Setup = /opt/local/lib/libtdsodbc.so
FileUsage = 1


Por último, el /opt/local/etc/odbc.ini que no es más que la definición de nuestro DNS. Este archivo también estará vacío.
Código :
[MI_DNS]
Description= Base de datos MI_DB
Driver                  = FreeTDS
Trace                  = Yes
TraceFile             = /tmp/sql.log
Database              = MI_DB
Servername          = MI_SERVIDOR
UserName            = usuario
Password             = contraseña
Port                    = 1433
Protocol               = 7
ReadOnly             = No
RowVersioning       = No
ShowSystemTables = No
ShowOidColumn     = No
FakeOidIndex         = No


Lo importante es que en Servername ponemos el que definimos en el archivo freetds.conf.

Ya tenemos instalado y configurado nuestro driver freetds para conectarnos con Python, lo que nos falta es el paquete que usará python. Logramos esta conexión con pymssql 

Para instalarlo:
Código :
$ sudo pip install pymssql



¡Listo! sólo falta probarlo. Lo importante es poner en el parámetro host el server que definimos en el archivo freetds.conf.
Código :
>>> import pymssql
>>> conn = pymssql.connect(host='[b]MI_SERVIDOR[/b]', user='user', password='password', database='mydatabase')
>>> cur = conn.cursor()
>>> cur.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')
>>> row = cur.fetchone()
   while row:
      print "ID=%d, Name=%s" % (row[0], row[1])
      row = cur.fetchone()
>>> conn.close()

No hay comentarios:

Publicar un comentario

Entradas populares