[Python] insert à in db sqlite3

Vittorio Zuccala' vittorio.zuccala a gmail.com
Mar 31 Ago 2010 17:23:00 CEST


Buongiorno a tutti,
è sicuramente una cosa banale ma sto sbattendo la testa sul seguente
problema:

* dal nostro gestionale recupero un file CSV con lettere accentate,
apostrofi e quant'altro.
* devo importare il tutto in un file sqlite

Utilizzo il seguente codice (è una prova quindi non badate alle finezze):

*import sqlite3
import os
import csv

con=sqlite3.connect('dbe.sqlite')
cur=con.cursor()

try:
    cur.execute('DROP TABLE cqrep000f')
except:
    pass

cur.execute('''
        CREATE  TABLE "cqrep000f" (
            # segue una cinquantina di campi
            )
    ''')
con.commit()

f = open('cqrep.csv')

csv_reader = csv.reader(f, delimiter=';', quotechar = '"')

for row in csv_reader:
    l=len(row)
    for i in range(l):
        row[i]=unicode(row[i])

    cur.execute('INSERT INTO cqrep000f VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', row)
    con.commit()

cur.close()
con.close(*)

Tutto funziona finchè non incontra lettere con accenti, apostrofi o cose
strane.
L'errore che mi restituisce è il seguente:

*"row[i]=unicode(row[i])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 4:
ordinal not in range(128)"
*

Come posso ovviare il problema?
Grazie per gli aiuti.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20100831/1d138137/attachment.htm 


Maggiori informazioni sulla lista Python