Seamos serios, tratar con bases de datos así, a pelo, es un peñazo de cuidado. Por eso surgen frameworks, interfaces, abstracciones o como quieras llamarlos para facilitar esta labor. Es el caso de (aunque son muy distintos entre si) Hibernate (Java) o PDO (PHP). Para Python también hay varias opciones pero hoy te traemos una que tiene especial buena pinta: dataset.
La premisa de dataset es hacer tan sencillo manejarse con bases de datos en Python como lo es manejarse con ficheros a través de JSON y la verdad es que tiene unas características bien interesantes:
-
Schema automático, es decir, si escribes una tabla o una columna que no existe, se crea. Magia potagia.
-
Upserts, o sea, no tienes que distinguir si updateas o insertas, ya lo hace dataset por ti
-
Es compatible con la mayoría de las bases de datos relacionales top como MySQL, Postgre SQL, SQLite (o cualquier otra que incluya SQL en su nombre, basicamente).
-
La base de datos puede ser exportada de manera sencilla a través de scripts e incluyendo metadatos y nombres de ficheros dinámicos
-
Query helpers, como all rows en una tabla o all distinct values a través de un conjunto de columnas.
Y ya que estamos, un ejemplo de como queda el código:
import dataset
db = dataset.connect('sqlite:///:memory:')
table = db['sometable'] table.insert(dict(name='John Doe', age=37)) table.insert(dict(name='Jane Doe', age=34, gender='female'))
john = table.find_one(name='John Doe')
Elegante a la par que bello. Tiene buena pinta. Ya sabéis pythoneros, a probarlo (los que no lo hayáis hecho todavía, claro) y a darnos feedback al resto vía comentarios.
Pd: obviamente puedes forkear dataset desde Github.
Vía e imagen | dataset