Python y Microsoft SQL Server
July 11, 2008Durante mi curso de Base de Datos, mi profesor nos pidió la implementación de una Base de Datos en Microsoft SQL Server 2000. Si bien usando Erwin y la Ingeniería Directa, generé el script y lo ejecuté… no quiere decir que ahí haya terminado todo eso.
Luego usando el Administrador Corporativo (Una interfaz gráfica para el Microsoft SQL Server) me dediqué al llenado de datos. No obstante, la clase pasada del Martes el profesor nos pidió algo excéntrico:
Adjunten a su trabajo los scripts de creación y llenado de datos. Con eso los evaluaré.
Si bien tenía ya el script de creación, jamás hice un script de llenado. Todo mi llenado lo hice gráficamente. No necesito complicarme la vida usando INSERT INTO… cuando hay herramientas que lo pueden hacer por uno.
Sin embargo, el profesor pedía ese script y tenía que hacerlo, aunque decidí no llenar todo a mano nuevamente. ¿Quién puede ayudarme?
La respuesta, es nuevamente Python. Googleando un poco sobre alguna librería para conectarme a Microsoft SQL Server 2000 me topé con Pymssql, una librería que permitía ser usada para conexión con Microsoft SQL Server. La descargé y la instalé.
El plan era usar Python para recuperar todos los contenidos de los registros y crear instrucciones INSERT. Sabemos que la sintaxis de un INSERT en SQL es más o menos el siguiente:
INSERT INTO tabla VALUES (valor1, valor2, valor3, …, valorn)
Lo que haría era leer una tabla, y por cada fila ir insertando sus valores dentro de una variable del tipo String donde crearía la "instrucción" SQL. Al script que desarrollé lo llamé SQL-INSERT Creator.
El producto final pudo decirse que fue un 70% efectivo. Pueden bajarlo de aquí (Cambiar la extension a .py) y lo pongo bajo licencia MIT, porque me tomó sólo 1 hora escribirlo. Esta es un fragmento de la salida del script:
INSERT INTO GREMISION VALUES (1, 1, 1)
INSERT INTO PROFORMA VALUES (1, datetime.datetime(2008, 6, 20, 0, 0), 1, 1, Decimal("500.00"))
Aún quedan cosas por perfeccionar, como que no muestre las fechas como funciones Python, pero al menos ya es menos trabajo el arreglar eso que tener que copiar todo el código nuevamente.
Para el trabajo final pienso presentar 3 scripts: El de creación, el de inserción y este. Espero que esto le sirva a cualquier otro que se encuentre en una situación similar.





