Posts Tagged ‘ MySQL

Salvando la oscura era digital; de SQL Server 2000 a Django

Uno de los últimos problemas a los que me he tenido que enfrentar es construir, a partir de una base de datos SQL Server 2000 obsoleta, un modelo Django, que aunque no importa, está alojado en una BD Postgres.

En cierto modo, se parece a este documental, en el cuál se describe lo inaccesible que puede llegar a ser la información debido al rápido avance de los sistemas de almacenamiento.

Esto llegó a preocupar a la CIA, la cual guarda un ejemplar funcional de cada máquina con la que ellos han trabajado, con sistema operativo incluido. De forma que se pueda recuperar la información almacenada en dichos soportes obsoletos, en caso de que sea necesario. También tiene su punto paranoico.

¡Vamos al grano! Para empezar avisaré de que mi experiencia con SQL Server era nula (hasta este momento) y los sistemas con los que trabajo son GNU/Linux y sw libre preferiblemente.

Para ello, después probar con wine sin resultados, lo intenté con una VirtualBox y Windows XP, pero SQL Server tiene cerradas las conexiones  TCP, después de probar con diversos SP del mismo sin lograr conectar (para esto tenemos la plugin de Python pymssql, o podemos hacer un telnet 127.0.0.1 <puerto que sea>) resulta que SQL Server 2000 tiene cerrado el puerto TCP por seguridad… ya sabemos lo que entiende esta gente por seguridad…

SQL Server no habre el puerto TCP para conexiones entrantes, así que se identifica con credenciales de Windows y viendo el panorama decidí que no me interesaba meterme más en el tema, por lo que opté por exportar la BD entera a otro sistema, para esto utilicé el driver (que ya tenía instalado) MySQL ODBC, consiguiendo pasar al base de datos SQL Server virtualizada a una MySQL en host con GNU/Linux.

A partir de aquí me deshice de la VirtualBox y programé el parser.

En general, cuando requería sacar un objeto de la BD hacía la consulta a la base de datos en SQL “a pelo”, con los valores resultantes instanciaba las clases y las guardaba. Los problemas más destacables que tuve que afrontar fueron:

  • Elementos repetidos: Para esto almacenaba los elementos en un diccionario (par id en sqlserver-objeto), capturaba la excepción KeyError, si entraba en esta el elemento no existía y era creado, en caso contrario era descartado.
  • Claves externas huérfanas: ¿Tiene SQL Server 2000 restricciones en claves externas? Si las tiene la gente que programó la BD no las tuvo en cuenta, para esto consultaba el diccionario de la entidad maestro y capturaba de nuevo la excepción KeyError, en este caso si existía estábamos de suerte y el elemento era guardado, en caso contrario el elemento estaba huérfano y era descartado.
  • Relaciones muchos a muchos: Estas relaciones se modelan como una tabla id-id, para obtenerlas hacía una consulta cruzada en SQL para cada elemento, obteniendo así sus elementos relacionados, aquí aplicaba el mismo procedimiento que en el caso anterior sólo que con varios resultados.

Y mi pregunta es; ¿cómo han programado esta gente la BD?

Un gran número de parejas jóvenes que se enfrentan a varios problemas de salud, tales personas pueden comprar medicamentos en línea sin orden. Antibióticos de penicilina muy populares que combaten las bacterias. Estos remedios no tratan una infección viral por ejemplo un resfriado común. Vamos a hablare de numerosas drogas existe. Kamagra es un remedio usado para tratar de varias quejas. ¿Qué sabes sobre “Comprar Kamagra Oral Jelly“? Actualmente muchos hombres buscan la frase exacta “comprar kamagra 100mg” en Internet. (Leer más “Kamagra Oral Jelly“). Debido a que algunos de los problemas sexuales son emergencias médicas, es bueno conocer los síntomas. Ciertas personas que usan este medicamento generalmente no tienen efectos secundarios graves Kamagra. El farmacéutico necesita resolver el problema qué dosis es la mejor en su caso. Si el medicamento se usa según sea necesario, es poco probable que esté en un horario de dosificación.