Zdravim, behem studia pythonu a hrani si s Flaskem a databazemi obecne me napadla abstrakce nad sql, kterou bych si rad zkusil vytvorit, tusim, ze nejde o nic efektivniho, nebo noveho, ale nejsem programator a python mam jako konicek a toto me zajima ciste ze studijnich duvodu, rad bych vedel, jak se to da vyresit, proto prosim nevymlouvejte mi to, ale poradte cestu... Nebo ukazte kde mam chybu
Predstava: mam tridu db, ktere dam jako slovnik jmeno metody a sql dotaz, tim se mi vytvori objekt s metodami, kterym bude stacit jen predavat parametry a vrati se mi data z databaze. cili melo by fungovat neco takoveho: #!/usr/bin/env python3 from string import Template import psycopg2 ### trida s dynamickymi metodami class db: """ test dynamickych metod """ def _sql(self, _sql = None, **kwargs): """ predloha pro dynamicke funkce """ query = Template(_sql).substitute(**kwargs) print(query) _self._CUR.execute( query ) return _self._conn.commit() def __init__(self, SQL = None): if SQL is None: raise(KeyError("Musite definovat slovni SQL")) # DB CONNECT self._conn = psycopg2.connect("dbname=mail user=marek", cursor_factory= psycopg2.extras.DictCursor) self._CUR = self._conn.cursor() # create methods by SQL dict for _func, _sql in SQL.items(): setattr(self, _func, self._sql(_sql = _sql)) def close(self): return(True) if __name__ == '__main__': '''Priklad pouziti - pridam zaznam pepa - smazu zaznam pepa ''' _SQLS = { 'add' : 'insert into tabulka (name, age, email) VALUES ($name, $age, $email);', 'edit' : 'update tabulka set age = $age, email = $email where name = $name;', 'del' : 'remove from tabulka where name = $name;', } data = db(_SQLS) data.add(name = 'Pepa', age = '12', email = 'pep...@gmail.fi') data.del(name = 'Pepa') data.close() Omlouvam se za nedodrzovani PEP, skutecne nejsem moc programator a obcas docela prasim v zapalu boje. Predem diky za vysvetleni, pomoc, nasmerovani... _______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz