[Python] Curiosa interpretazione dell'encoding nelle stringhe di mssql

Fabrizio Cornelli fabrizio.cornelli a gmail.com
Ven 1 Set 2006 10:18:19 CEST


Ciao a tutti,
sono nuovo di questa lista ma scrivo codice da qualche tempo. Ho bisogno, in
questi giorni, di interfacciarmi ad un db mssql (si lo so... :-)) e sto
usando con discreta soddisfazione il modulo pymssql.

Chi ha realizzato il db al quale devo accedere ha avuto la brillante idea di
usare dei caratteri accentati (Es: "id_attività") nei nomi delle tabelle e
nei nomi dei campi, cosa che mi ha costretto, per non so quale questione di
encoding, a creare delle viste con i nomi ascii, risolvendo temporaneamente
il problema.
Ora sono in fase di ottimizzazione e devo eliminare quelle viste,
l'esistenza di legacy ci impedisce di cambiare i nomi dei campi non ascii,
devo trovare la maniera di accedervi deterministicamente da python.

Qual'è il problema? presto detto: con l'interfaccia di idle e di pythonwin
ci riesco, da python su riga di comando no.

Ho avuto l'accortezza (spero di aver fatto bene) di mettere in testa la
stringa:
-*- coding: latin-1 -*-
Quindi ho proceduto con una query del tipo: server.query("select id_attività
from prodotti")
L'errore fornito da python è una cosa del tipo:
pymssql.DatabaseError: internal error: SQL Server message 207, severity 16,
stat
e 3, line 1:
Il nome di colonna 'id_attivitÓ' non è valido.

Notate come la à si è trasformata in Ó. Immagino che si tratti di un
problema di encoding.

Mi sarei arreso (ci sbatto la testa da giorni) se non avessi visto
funzionare quel codice. Quello che mi lascia incapace di spostarmi dal
problema è che quel codice, da dentro idle funziona!

Ho provato a convertire in unicode, esplicitare il codice ascii del
carattere 'à', a minacciare il compilatore e a immolare un porcello a Odino.
Senza risultati.

Qualcuno ha voglia di darmi una mano?
(Per altro è avanzato del porcello.)
Grazie! :-)

-- 
Fabrizio Zeno Cornelli
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20060901/8232ad0a/attachment.htm


Maggiori informazioni sulla lista Python