Esta es una tarea bastante rutinaria, que de seguro la has hecho en algún otro lenguaje/plataforma. Razón por la cual es un buen ejemplo para la #SemanaPythonRD que estamos llevando a cabo.
Vamos a comenzar con un archivo CSV bastante sencillo, que contiene 3 campos: Id, User & Email. La idea seria recorrer este archivo, fila por fila y cargarlo a una base de datos de SQLite3.
1,hminaya,hminaya@email.com 2,jcruz,jcruz@email.com 3,mperez,mperez@email.com 4,afabro,afabro@email.com 5,cguzman,cguzman@email.com
Leer el CSV
Haremos esto en dos pasos, primero vamos a leer el archivo y recorrer todas las filas/columnas y luego nos preocuparemos por la base de datos. Para leer el archivo lo haremos con este programa
# Carga los usuarios que estan en el archivo users.csv import csv FileName = "users.csv" File = open(FileName, "rb") reader = csv.reader(File) print "###############################################" print "#### Recorriendo el archivo %s" % FileName print "###############################################" # Arreglo para almacenar la info detalle = [] # Guardar cada fila en un elemento for row in reader: detalle.append(row) # Imprimir el contenido en pantalla for row in detalle: print row File.close()
El resultado al ejecutar es el siguiente:
Insertar en la Base de Datos
Para insertar en la Base de Datos es bastante simple, solo basta con:
- Importar el modulo correspondiente
- Abrir la conexión
- Abrir un cursor
- Hacer el insert
- Hacer commit
Y aqui tenemos el código completo:
# Carga los usuarios que estan en el archivo users.csv
import csv
import sqlite3
FileName = "users.csv"
File = open(FileName, "rb")
reader = csv.reader(File)
conn = sqlite3.connect('users.db')
c = conn.cursor()
print "###############################################"
print "#### Recorriendo el archivo %s" % FileName
print "###############################################"
# Arreglo para almacenar la info
detalle = []
# Guardar cada fila en un elemento
for row in reader:
detalle.append(row)
# Imprimir el contenido en pantalla
for row in detalle:
c.execute("Insert into users values(%s,'%s','%s')" % (row[0], row[1], row[2]))
print "ID: %s | UserName: %s | Email: %s" % (row[0], row[1], row[2])
# No olviden hacer commit
conn.commit()
File.close()
c.close()
El resultado es:
Obviamente aqui faltan muchas validaciones respecto a tipo de datos y de data invalida, pero es solo un ejemplo para que vean lo corto que es hacer en python un script de esta naturaleza.

















Pingback: Developers Dominicanos – Un API en 10 minutos con Ruby on Rails