[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