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.






Hubiera sido mas facil que sacaras un backup de la base de datos. No se MSSQL pero pgsql , mysql y otros .. te realizan los backup como archivos .sql llenos de inserts.
Comment by necudeco — July 21, 2008 @ 10:13 am
Tal y como dice necudeco, la forma mas sencilla hubiera sido hacer un backup de la base de datos, aunque si como dices dispones de una interfaz gráfica, solamente tienes que exportar tu bd en formato SQL.
Pero bueno, supongo que con tu solución has aprendido mucho mas que haciendolo como yo digo, así que tu profesor puede darse por satisfecho xD.
Un saludo.
Comment by Chemari — November 3, 2008 @ 3:18 am
Hola, tu link del script ya no funciona
Comment by rene — November 20, 2009 @ 6:20 pm