Non so se ho capito bene cosa ti serve, ma con questo: keys = [ ("LDAP server", "Agent"), ("-LDAP-server-", "_S-"), ("Pippo'", "'pluto"), ("Pippo", None), ("Pippo", "") ]
T=[] for a,b in keys: print q.curs.mogrify("select trim(%s|| coalesce( '_'||%s,'' ),'_');",(a,b)) q.curs.execute("select trim(%s|| coalesce( '_'||%s,'' ),'_');",(a,b)) T.append(q.curs.fetchone()[0]) print '\n'.join(T) Ottengo: >>> T=[] >>> for a,b in keys: ... print q.curs.mogrify("select trim(%s|| coalesce( '_'||%s,'' ),'_');",(a,b)) ... q.curs.execute("select trim(%s|| coalesce( '_'||%s,'' ),'_');",(a,b)) ... T.append(q.curs.fetchone()[0]) ... select trim('LDAP server'|| coalesce( '_'||'Agent','' ),'_'); select trim('-LDAP-server-'|| coalesce( '_'||'_S-','' ),'_'); select trim('Pippo'''|| coalesce( '_'||'''pluto','' ),'_'); select trim('Pippo'|| coalesce( '_'||NULL,'' ),'_'); select trim('Pippo'|| coalesce( '_'||'','' ),'_'); >>> print '\n'.join(T) LDAP server_Agent -LDAP-server-__S- Pippo'_'pluto Pippo Pippo Ciao Stefano 2012/3/20 Simone Federici <s.feder...@gmail.com> > Dato queste coppie di chiavi > > keys = [ > ("LDAP server", "Agent"), > ("-LDAP-server-", "_S-"), > ("Pippo'", "'pluto"), > ("Pippo", NULL) > ("Pippo", "") > ] > > tramite SQL: > > - PGSQL quote_literal(column1) || '_' ||quote_literal(column2) > - SQLITE quote(col1) || '_' || quote(col2) > - ORACLE ''''||replace(col1, '''', '''''')||'''_'''||replace(col2, > '''', '''''')||'''' > - MYSQL concat('''', replace(coalesce(column1, ''), '''', ''''''), > '''_''', replace(coalesce(column2, ''), '''', ''''''), '''') > > otterrei questo: > > - 'LDAP server'_'Agent' > - '-LDAP-server-'_'_S-' > - 'Pippo'''_'''pluto' > - 'Pippo'_'' > - 'Pippo'_'' shoud be => 'Pippo'_ > > > *c'è da capire come fare a differenziare gli ultimi 2 casi, con NULL o > stringa vuota* > > Devo definire lato DB una funzione di concatenazione cross database che > posso anche replicare in python. > > in python è facile però santa miseria in ANSI SQL non si può fare un > cavolo :-) > > la risposta che dovrò farvi dopo la vostra prima domanda è: > La devo fare anche non in python perché mi serve su DB, questioni di > performance joins tra tabelle. > Altrimenti dovrei prendere tutti gli id di tutta la tabella A, > concatenarli e passarli alla query successiva sulla tabella B. > > > spiegazione lunga -> potete non leggerla e aiutarmi comunque a risolvere > il problema :-) > è per la risoluzione di un problema per le chiavi composte per django, in > relazione alle sue generic relations, dove django va a scrivere la chiave > (content_id), essendo una app che deve andare bene per tetti i modelli > (guarda ad esempio il log dell'admin), deve funzionare anche con i modelli > che hanno una chiave composta, quindi cosa ci scrivo dentro il content_id, > qualcosa che mi concateni le parti delle chiavi e che però sia calcolabile > anche con SQL per inserirlo nelle join tra le tabelle. > https://github.com/simone/django-compositekey<https://github.com/simone/django-compositekey> > > grazie > S > > > _______________________________________________ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > >
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python