miércoles, 21 de abril de 2010

SQLite en Python.

Una herramienta muy útil para trabajar con SQLite  es la extensión de firefox "sqlitemanager".

Hay una gran cantidad de bases de datos, tanto de pago como gratuitas. También existen una gran variedad de módulos distintos para trabajar con esas bases de datos en Python, lo que implica que hay una gran cantidad de APIs que aprender.

Se ha desarrollado una propuesta de API estándar para el manejo de bases de datos en Python para que el código sea prácticamente igual para todas las bases de datos. Esta API es Python Database API (DB-API)

http://www.python.org/dev/peps/pep-0249/

Hay un módulo que se ajusta a la DB-API 2.0 para SQLite. Dicho módulo es:
slqlite3

Para realizar la conexión con la base de datos se hace con la función "connect" esta función tiene unos parámetros de entrada que no están estandarizados. Para el módulo sqlite3 el parámetro de entrada es la ruta donde se encuentra almacenado el archivo que contiene los datos. También se puede poner la cadena ":memory:" lo que implicará que se usará la memoria RAM para la base de datos, por lo tanto no se almacenarán datos al terminar la ejecución del programa.

import sqlite3
bdd = sqlite3.connect("./db.sqlite")

Para poder realizar operaciones, se han de realizar sobre un cursor.

cur=bdd.cursor()

Si en nuestra base de datos está desactivado la opción de autocommit, será necesario hacer un commit:

bdd.commit()


Ejemplo:

#!/usr/bin/python
import sqlite3

#connect to the data base
bdd = sqlite3.connect("./db.sqlite")

#cursor
cur=bdd.cursor()

#create a table
cur.execute("""CREATE  TABLE "main"."data" 
("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , 
"name" VARCHAR)""")

#insert a value
name="Nombre"
sql_script="INSERT INTO data ( name ) VALUES (\'%s\')" % name
cur.execute(sql_script)
bdd.commit()


#close the data base 
bdd.close()


Nota: Si se va a ejecutar este ejemplo por segunda vez, no debe existir el fichero "db.sqlite" en el mismo directorio, ya que va a intentar crear otra vez la tabla "data" y dará error.


Post relacionados:
http://blog.pablovieytes.com/2010/04/base-de-datos-sqlite-y-gestor-manager.html

Bibloigrafía:

Base de datos sqlite y gestor "sqlite manager".

SQLite es un sistema de gestión de bases de datos relacional que está contenida en una relativamente pequeña biblioteca en C.

El motor de SQLite no es un proceso independiente con el que el programa principal se comunica, si no que pasa a ser parte del programa principal que lo gestiona.

El conjunto de la base de datos (definiciones, tablas, índices, y los propios datos), es guardada en un único  fichero estándar en la máquina host. Este diseño simple se logra bloqueando todo el fichero de base de datos al principio de cada transacción.


Sqlite manager es una extensión para firefox que permite manegar bases de datos sqlite. Esta extensión permite, crear nuevas tablas, visualizar el contenido de tablas existentes, modificar dicho contenido, o bien añadir nuevos registros a la base de datos.

Extensión:
https://addons.mozilla.org/es-ES/firefox/addon/5817


Algunos pantallazos de sqlitemanager.


Ejemplo de base de datos en sqlitemanager:

Interfaz para la creación de una nueva tabla:



Registros de una tabla existente: