""" Manejo de Bases de Datos en Python librería SQLite3 (parte de la biblioteca estandar de Python): Hecha en C, provee una BD liviana basada en un archivo, se guarda en el disco, y no requiere de un proceso aparte, permite el acceso a la BD usando una variante no standard de lenguaje SQL. También permite trabjabar con una base de datos en memoria. ej. """ import sqlite3 # Conexión a base de datos conn = sqlite3.connect(':memory:') # Cursor cursor = conn.cursor() # Crear tabla cursor.execute("""CREATE TABLE moneda (ID integer primary key, nombre text, simbolo text)""") # Insertar datos de monedas cursor.execute("INSERT INTO moneda VALUES (1, 'Peso (CLP)', '$')") cursor.execute("INSERT INTO moneda VALUES (2, 'Dólar (USD)', 'U$')") # Guardar cambios conn.commit() # Consultar monedas query = "SELECT * FROM moneda" # Obtener la respuesta (filas) monedas = cursor.execute(query).fetchall() print(monedas) # Cerrar conexión a la base de datos conn.close() """ ___________________________________ |Tipo de Python | Tipo de SQLite | |-----------------+-----------------| | None | NULL | | int | INTEGER | | float | REAL | | str | TEXT | | bytes | BLOB | +-----------------+-----------------+ SQLite puede almacenar tipos de datos adicionales usando adaptadores. SQLite3 convierte tipos de SQLite a diferentes tipos de Python por medio de conversores. # Ejemplo adaptador: import sqlite3 class Point: def __init__(self, x, y): self.x, self.y = x,y def __conform__(self, protocol): if protocol is sqlite3.PrepareProtocol: return "%f,%f" % (self.x, self.y) con = sqlite3.connect(":memory:") cur = con.cursor() p = Point(5.2, -3.5) cur.execute("select ?", (p,)) print(cur.fetchone()[0]) # Conversores y adaptadores... # apunte migración --Crear BD BEGIN TRANSACTION; CREATE TABLE IF NOT EXISTS 'moneda' ( 'codigo' TEXT, 'nombre' text, 'symbol' text, PRIMARY KEY('codigo') ); COMMIT; --Agregar campo 'factor' BEGIN TRANSACTION; ALTER TABLE 'moneda' ADD 'factor' REAL; COMMIT; """