Ciao a tutti,<br>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.<br>
<br>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.
<br>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.<br><br>Qual'è il problema? presto detto: con l'interfaccia di idle e di pythonwin ci riesco, da python su riga di comando no.
<br><br>Ho avuto l'accortezza (spero di aver fatto bene) di mettere in testa la stringa:<br>-*- coding: latin-1 -*-<br>Quindi ho proceduto con una query del tipo: server.query("select id_attività from prodotti")
<br>L'errore fornito da python è una cosa del tipo:<br>pymssql.DatabaseError: internal error: SQL Server message 207, severity 16, stat<br>e 3, line 1:<br>Il nome di colonna 'id_attivitÓ' non è valido.<br><br>Notate come la à si è trasformata in Ó. Immagino che si tratti di un problema di encoding.
<br><br>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!<br><br>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.
<br clear="all"><br>Qualcuno ha voglia di darmi una mano? <br>(Per altro è avanzato del porcello.)<br>Grazie! :-)<br><br>-- <br>Fabrizio Zeno Cornelli