Apuntes_Python/01_curso/Modulo_4/4-3a_libreria_SQLite3.py

99 lines
2.3 KiB
Python
Raw Normal View History

2022-12-24 22:41:20 -03:00
"""
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;
"""