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
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python