userlinux.py - Helper script to migrate userlinux.net database to
a new django-driven application.
conn = MySQLdb.connect (host="localhost", user="userlinux", passwd="userlinux",
blog_post (id, title, slug, text, tags(uno, dos, tres), hits,
creation_date(2011-04-19), user_id(1), status)
cursor.execute("""SELECT p.id, pl.title, pl.slug, pl.content, p.hits,
p.date_created FROM posts p, posts_languages pl WHERE p.id=pl.post_id""")
for i in cursor.fetchall():
# traducido, lo que hace esta linea:
print "INSERT INTO blog_post VALUES (%s, '%s', '%s', '--', '%s', '%s')" \
% (i[0], i[1], i[2], i[4], i[5])
# "INSERT INTO blog_post VALUES (p.id, 'p.title', 'p.slug', '--', 'p.hits',
# por que cada elemento i es una fila que devuelve la db y MySQLdb pone
# cada campo del select en su posición dentro de la tupla que contiene
# los datos de la fila. Esto es realmente FEO, el driver de postgresql
# (pgsql) devuelve los datos en un diccionario, asi puedes hacer:
# i['id'] o i['title'] en lugar de i[0] o i[1] (mucho mas legible)
Seleccionamos los tags, hay que agregarlos de la forma (tag1, tag2, tag3)
como string al campo tags de blog_post
tags_cursor = conn.cursor() # no se si es necesario, pero por si las moscas ;P
tags_cursor.execute ("""SELECT * FROM posts_tags, tags WHERE posts_tags.post_id='%s'
AND posts_tags.tag_id=tags.id""" % i[0])
for tag in tags_cursor.fetchall():
print "UPDATE blog_post SET tags='' WHERE p.id=%s" % (i[0])