97 lines
2.3 KiB
Python
97 lines
2.3 KiB
Python
|
"""
|
||
|
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()
|