""" Conexiones a base de datos """ import sqlite3 import hashlib # Conexión a base de datos conn = sqlite3.connect(':memory:') "Cursor: Objeto cursor" cursor = conn.cursor() # Crear tabla cursor.execute("""CREATE TABLE moneda (ID integer primary key, nombre text, simbolo text)""") "commit(): hace un commit de la transancción" conn.commit() """ EXECUTE: atajo q crea un cursor y ejectua la consulta (metodo excecute del cursor, devuelve el cursor) execute many, lo mismo pero con múliples consultas """ # Insertar datos de monedas cursor.execute("INSERT INTO moneda VALUES (1, 'Peso (CLP)', '$')") cursor.execute("INSERT INTO moneda VALUES (2, 'Dólar (USD)', 'U$')") "rollback(): revertir cambios, al último commit" conn.rollback() # 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() """ Create Function Permite crear una función personalizada, para ser usada dentro las sentencias SQL, usando el nombre de la función. Puede devolver cualquier valor soportado por SQLite: -BYTE -STRING -INT -FLOAT -NONE Create Agregate Permite crear una función de 'agregación', para esto de debe definir una clase que implemente los metodo STEP y FINALIZE. Finalize, devuelve el resultado de la 'agregación'. puede devolver cualquier tipo de dato soportado por SQLite. """ # Crear función def md5sum(t): return hashlib.md5(t).hexdigest() conn = sqlite3.connect(':memory:') # create_function() conn.create_function("md5", 1, md5sum) cursor = conn.cursor() # (?) es reemplazado por "a md5 hash" cursor.execute("select md5(?)", (b"a md5 hash",)) print(cursor.fetchone()[0]) conn.close() # Ejemplo Agregación class MiSum: def __init__(self): self.cont = 0 def step(self, valor): self.cont += valor def finalize(self): return self.cont conn = sqlite3.connect(':memory:') conn.create_aggregate("misum", 1, MiSum) cursor = conn.cursor() cursor.execute("CREATE TABLE test(i)") cursor.execute("INSERT INTO test(i) VALUES (1)") cursor.execute("INSERT INTO test(i) VALUES (2)") cursor.execute("SELECT MiSum(i) FROM test") print(cursor.fetchone()[0]) conn.close()