-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ciao a tutti,
mi sono iscritto da una settimana circa in ML con l'intento di promuovere un modulo python che sto scrivendo, con la speranza di trovare qualche interessato con cui condividere l'avventura. Mi e' gia' capitato di parlarne con Eriol. Il modulo si chiama Mother ed e' un ORM, cioe' un'astrazione per il linguaggio SQL, come SQLAlchemy o SQLobject. Utilizza l'ottimo psycopg. Il punto e' che ha delle caratteristiche peculiari e, spero, interessanti: * E' non tipato. Non occorre specificare il tipo dei campi delle tabelle. * E' non dichiarato: Mother e' introspettivo e conosce automaticamente i campi di ogni tabella. Questa grazie a un'inizializzazione, automatica, che viene eseguita una tantum. * Ogni classe puo' ottenere, senza necessita' di definizioni, i metodi per gestire automaticamente Figli, Relazioni e Join. * Connessione al DB persistente. * Un ottimo logger (speaker.py), che permette di loggare tramite syslog o su stdout. Per il momento solo postgres e' supportato, ma l'esclusiva mi attrae quasi :) Mi chiedo se non ci sia interesse da parte della comunita' italiana Python ad adottare il progetto, trasformandlo magari in una fucina attraverso la quale si possa prima di tutto divertirsi e imparare, ma anche portare avanti un progetto che potrebbe diventare piu' importante. Per questo sono a vostra disposizione. Al momento il codice e' accessibile tramite svn, (c'e' anche un Howto): $ svn co svn://siddharta.efphe.net/mother mother Spero di non avervi annoiato troppo. In seguito riporto qualche esempio (in verita' si tratta solo di qualche comando minimale) di utlizzo, per chiarire meglio le caratteristiche che ho cercato di descrivervi. Ciao e buon lavoro - -- efphe # ## Esempi, ricorda che i tipi non contano...uso uno pseudo SQL # CREATE TABLE ABC (a,b,c); CREATE TABLE DEF (d,e,f); CREATE TABLE AD (a,d, a foreign key (ABC.a),d foreign key(DEF.d)) >>> MyAbc=ClsAbc(dict(a=1,b='ciao mondo',c=27)) >>> MyAbc.insert() >>> MyDef=ClsDef(dict(d=2,e=78,f=42)) >>> MyDef.insert() >>> # Ora chiamo un metodo mai definito, ma automaticamente >>> # creato: crea un record in AD, mettendo in relazione >>> # Abc con Def >>> MyAbc.assignDef(MyDef) >>> # Ora voglio ottenere tutti i record relazionati: >>> # il metodo "joinDef()" e' gratuito e non occorre >>> # definirlo >>> MyAbc=ClsAbc(dict(a=1)) >>> MyDef_list= MyAbc.joinDef() >>> # oppure >>> MyDef_list= MyAbc.joinDef(filter="WHERE e=78") >>> # oppure >>> MyDef_list= MyAbc.joinDef(filter={e:78}) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFU6EQi7obm7aBjHcRAmRTAJ0Q+x1UDFfBcZ3BT8GHnOwFWYm7TwCfQTuZ wunl26ayJloYroCiLKFmLEY= =25jM -----END PGP SIGNATURE----- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python