""" Consultar Objetos de una base de datos desde Python """ import sqlite3 DB_PATH = './4-3d_prueba.db' class MonedaNoExiste(Exception): pass class AdminMoneda(object): def __init__(self, database=None): if not database: database = ':memory:' self.conn = sqlite3.connect(database) self.cursor = self.conn.cursor() def insert(self, obj): query = 'INSERT INTO moneda VALUES ("{}", "{}", "{}")'.format(obj.codigo, obj.nombre, obj.simbolo) self.cursor.execute(query) self.conn.commit() def get(self, codigo): query = 'SELECT * FROM moneda WHERE codigo="{}"'.format(codigo) self.cursor.execute(query) datos = self.cursor.fetchone() if not datos: raise MonedaNoExiste("No existe la moneda código []".format(codigo)) return Moneda(codigo=datos[0], nombre=datos[1], simbolo=datos[2]) def filtro(self, **kwargs): codigo = kwargs.get('codigo') nombre = kwargs.get('nombre') simbolo = kwargs.get('simbolo') condicion = ' WHERE ' agregar_y = False agregar_condicion = False if codigo: condicion += 'codigo="{}"'.format(codigo) agregar_condicion = True agregar_y = True if nombre: if agregar_y: condicion += ' AND ' condicion += 'nombre="{}"'.format(nombre) agregar_condicion = True agregar_y = True if simbolo: if agregar_y: condicion += ' AND ' condicion += 'simbolo="{}"'.format(simbolo) agregar_condicion = True query = 'SELECT * FROM moneda' if agregar_condicion: query += condicion self.cursor.execute(query) resultado = self.cursor.fetchall() monedas = [] for datos in resultado: moneda = Moneda(codigo=datos[0], nombre=datos[1], simbolo=datos[2]) monedas.append(moneda) return monedas class Moneda(object): """ Modelo Moneda """ objetos = AdminMoneda(DB_PATH) def __init__(self, codigo, nombre, simbolo): self.codigo = codigo self.nombre = nombre self.simbolo = simbolo def __repr__(self): return u'{}'.format(self.nombre) """ ej. 4-3d """ # clp = Moneda(codigo='CLP', nombre='Pesos', simbolo='$') # usd = Moneda(codigo='USD', nombre='Dolar', simbolo='US$') # eur = Moneda(codigo='EUR', nombre='Euro', simbolo='€') # # Moneda.objetos.insert(clp) # Moneda.objetos.insert(usd) # Moneda.objetos.insert(eur) print(Moneda.objetos.get(codigo='CLP')) # Moneda.objetos.get(codigo='ART') print(Moneda.objetos.filtro(codigo='EUR')) print(Moneda.objetos.filtro(nombre='Dolar')) print(Moneda.objetos.filtro(simbolo='€')) print(Moneda.objetos.filtro())