[Python] delimitatori testo in sqlite

Vittorio Zuccala' vittorio.zuccala a gmail.com
Ven 5 Nov 2010 10:02:36 CET


Ok, allora facci vedere delle query che hai scritto.
Anche a questo proposito ti giro una delle viste che creo per un lavoro: se
devi fare qualcosa di dinamico ti conosiglio vivamente le viste.
Rimangono nel db sqlite anche quando il programma python termina e da python
basta fare un "SELECT * FROM VISTA"
Spero anche questo ti possa essere utile:

CREATE VIEW "AnticipiCorretta" AS
   select QPR_AGENTE As AgenteCodice,
      AC_RAG_SOCIALE_1 As AgenteRagioneSociale,
      QPR_NUM_PRATICA Pratica,
      CQREP_00_STATO As Stato,
      CQREP_00_ATTRIBUTO As Attributo,

julianday(date('now'))-julianday(strftime("%Y-%m-%d",substr(QPRAN_DATA,1,4)
|| "-" || substr(QPRAN_DATA,5,2) || "-" || substr(QPRAN_DATA,7,2))) As
Giorni,
      NETTO As Netto,
      QPR_PRODOTTO As Prodotto,
      prodotti.Descrizione As ProdottoDescrizione,
      "C/D" As "C/D",
      "P/P/P" As "P/P/P",
      QPRAN_PROGRESSIVO As Progressivo,
      ANTICIPO As Anticipo,
      QPRAN_MODALITA As Modalita,
      QPRAN_DATA_STORNO As DataStorno,
      QPRAN_PROVENIENZA As Provenienza,
      QPRAN_DESTINATARIO As Destinatario,
      strftime("%Y-%m-%d",substr(QPRAN_DATA,1,4) || "-" ||
substr(QPRAN_DATA,5,2) || "-" || substr(QPRAN_DATA,7,2))  As DataErogazione
   from anticipi
      LEFT JOIN prodotti ON anticipi.QPR_Prodotto=prodotti.IDCodice
      INNER JOIN cqrep000f ON
anticipi.QPR_NUM_Pratica=cqrep000f.CQREP_00_Pratica
   WHERE
      Stato <= 30 and
      Attributo NOT LIKE 'RT' and
      DataStorno = 0
   ORDER BY AgenteCodice ASC, Giorni DESC


Il giorno 05 novembre 2010 09:57, Massimo Capanni <massimo.capanni a gmail.com
> ha scritto:

> non ho ancora scritto il codice python, proprio perche' prima mi ponevo
> questo problema scrivendo a mano le query direttamente su Sqlite, ma
> evidentemente stavo sbagliando approccio <:-)
>
> grazie del suggerimento.
>
>
> Il giorno 05 novembre 2010 09:44, Vittorio Zuccala' <
> vittorio.zuccala a gmail.com> ha scritto:
>
> Adoro sqlite soprattutto perchè ti permette di fare lavori semplici in modo
>> molto veloce!
>> Ad ogni modo...
>> Puoi fornirci il codice che utilizzi?
>> Personalmente non ho trovato questo problema nell'inserimento di dati.
>> Ti riporto parte di mio codice per leggere un CSV e riportarlo su un db
>> sqlite: magari può esserti utile.
>> Occhio: magari devi fare un decode come ti segnalo nel codice
>>
>> csv_reader = csv.reader(filecsv, delimiter=';', quotechar = '"')
>>
>>         campi=string.split(cnf['tabelle'][i],"\n")
>>         for j in range(len(campi)):
>>             campo = re.search('"(.+)".+', campi[j])
>>             if campo:
>>                 campi[j]=campo.group(1)
>>         campi.pop(0)  # Elimina il nome della tabella dai campi
>>         campi.pop(-1)  # Elimina la parentesi finale dai campi
>>
>>
>>         print "Riempio la tabella %s" % i
>>         k=0
>>         p=1
>>         inserisci="INSERT INTO %s VALUES(" % i
>>         for row in csv_reader:
>>             l=len(row)
>>             for m in range(l):
>>                 row[m] = row[m].decode('latin1')
>>
>>             if k == 0:    # Controlla che i campi della tabella siano
>> uguali a quelli del CSV!!!!!!!!!!!
>>                 for c in range(len(row)):
>>                     if row[c] == campi[c]:
>>                         inserisci = "%s %s" % (inserisci,"?, ")
>>                     else:
>>                         print "DEVI CAMBIARE LA DEFINIZIONE IN
>> CONFIGURAZIONE DI CREAZIONE TABELLA %s" % row[c]
>>             else:
>>                 dimensione=len(inserisci)-2
>>                 inserisci = inserisci[0:dimensione] # Inserendo "?, "
>> cancello l'ultima occorrenza di ", "
>>                 inserisci = "%s %s" % (inserisci, ")")
>>                 cur.execute(inserisci,row)
>>                 if k==300:
>>                     print "Ho finito di aggiungere %d record" % (k*p)
>>                     p=p+1
>>                     k=1
>>             k=k+1
>>
>>         con.commit()
>>
>>
>>
>> Il giorno 05 novembre 2010 09:33, Massimo Capanni <
>> massimo.capanni a gmail.com> ha scritto:
>>
>>>  Buongiorno,
>>>
>>> forse e' una sciocchezza ma faccio lo stesso questa domanda:
>>> sto cercando di implementare un semplice database con Sqlite,
>>> e sto facendo alcune prove a mano direttamente con Sqlite stesso.
>>>
>>> Il database di prova contiene una tabella del genere:
>>>
>>> pippo (a integer primary key autoincrement, b text, c text);
>>>
>>> Cerco di inserire del testo a caso da qualche testo ma, se
>>> nella copia sono presenti doppi apici o singoli apici Sqlite
>>> mi comunica che non è correttamente identato. Secondo
>>> voi dovrei implementare un controllo dell'identazione degli
>>> apici prima dell'inserimento, con una funzione Python,
>>> oppure esiste una funzione che automaticamente risolve
>>> questo problema durante l'input?
>>>
>>> a presto,
>>>
>>> massimo
>>>
>>> _______________________________________________
>>> Python mailing list
>>> Python a lists.python.it
>>> http://lists.python.it/mailman/listinfo/python
>>>
>>>
>>
>> _______________________________________________
>> Python mailing list
>> Python a lists.python.it
>> http://lists.python.it/mailman/listinfo/python
>>
>>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20101105/42818c72/attachment-0001.htm 


Maggiori informazioni sulla lista Python