martes, 11 de febrero de 2014

Bases de datos SQLite3


SQLite es un sistema de gestión de base de datos de tipo relacional. Es un proyecto de dominio público creado por D. Richard Hipp que ofrece un gestor de base de datos liviano y robusto; y accesible desde programas escritos en los lenguajes de programación más populares. Algunos de ellos lo tienen embebido y no requieren la instalación de software adicional. Hay programas como Firefox, Opera, Skype, Clementine, OpenOffice y otros que utilizan SQLite.

En este blog hay una Guía Rápida de SQLite para conocer sus fundamentos.

También, en el sitio oficial de SQLite hay abundante documentación y en otros sitios hay herramientas gráficas como SQLiteman y Sqlite Database Browser que facilitan mucho el trabajo con las bases de datos.
.
En Python 3 el módulo sqlite3 permite crear bases de datos y operar con tablas y registros. Para ello, es necesario importar dicho módulo:

import sqlite3


A continuación, basándonos en ejemplos, mostraremos las operaciones más comunes sobre una base de datos SQLite. Antes, crearemos la base de datos y una tabla desde la línea de comandos.

Crear base de datos


sqlite3 contactos.db

Crear tabla


sqlite3 CREATE TABLE agenda (ident INTEGER PRIMARY KEY, nombre VARCHAR(30) UNIQUE, ecorreo VARCHAR(40), telefono INT(9));

Iniciar y cerrar una conexión con la base de datos


con_bd = sqlite3.connect('contactos.db')
con_bd.close()

Declarar y cerrar un cursor


cursor_agenda = con_bd.cursor()
cursor_agenda.close()

Añadir registro a la tabla agenda


reg = (1, "A", "a@a.a", 1)
cursor_agenda.execute("INSERT INTO agenda VALUES(?,?,?,?)", reg)

Completar la transacción de inserción de registro


con_bd.commit()

Consultar todos los registros de la tabla agenda


cursor_agenda.execute("SELECT * FROM agenda")
for registro in cursor_agenda:
    print(registro)

Consultar registro con parámetro


par = (1,)
cursor_agenda.execute("SELECT * FROM agenda WHERE ident=?", par)
for registro in cursor_agenda:
    print(registro)

Consultar los registros, uno a uno, con fetchone()


cursor_agenda.execute("SELECT * FROM agenda WHERE ident>?", par)
registro = cursor_agenda.fetchone() # Lee el primer registro
print(registro)

Consultar un nº de registros concretos con fetchmany()


par = (0,)
cursor_agenda.execute("SELECT * FROM agenda WHERE ident>?", par)
registros = cursor_agenda.fetchmany(2)  # 2 registros
for registro in registros: print(registro)

Consultar todos los registros, con fetchall()


cursor_agenda.execute("SELECT * FROM agenda WHERE ident>?", par)
registros = cursor_agenda.fetchall()
for registro in registros:
    print(registro)

Mostrar los campos de un registro por su posición


par = (2,)
cursor_agenda.execute("SELECT * FROM agenda WHERE ident=?", par)
for campo in cursor_agenda:
    print("Identificador:", campo[0])
    print("Nombre.......:", campo[1])

Consultar registros por nombre de campos


con_bd = sqlite3.connect("contactos.db")
con_bd.row_factory = sqlite3.Row
cursor_agenda = con_bd.cursor()
cursor_agenda.execute("SELECT * FROM agenda WHERE ident=?", par)
registro = cursor_agenda.fetchone()
print("Nombre", registro['nombre'])
print("Correo", registro['ecorreo'])

Borrar registro


values = (1,)
cursor_agenda.execute('DELETE FROM agenda WHERE ident=?',
                      values)
con_bd.commit()

Modificar campos


cursor_agenda.execute("UPDATE agenda SET ecorreo='a@b' WHERE ident=3")
con_bd.commit()

Deshacer modificación


con_bd.rollback()




Relacionado:


Ir al índice del tutorial de Python