[Python] Concatenazione lato DB => Rebus
Simone Federici
s.federici a gmail.com
Mar 20 Mar 2012 22:12:45 CET
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
grazie
S
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20120320/f5fd555c/attachment.html>
Maggiori informazioni sulla lista
Python