Bonjour à tous,

Je souhaite utiliser Sqlite pour stocker diverses infos de mon programme, infos rentrées par l'utilisateur.
Dans certains cas, celui-ci peut entrer des caractères accentués.

La sauvegarde dans Sqlite se fait correctement (en tout cas je n'ai pas de message d'erreur). Par contre lorsque je souhaite ré-interroger la BD là ça me met le message suivant:

Traceback (most recent call last):
File "C:\essai.py", line 703, in appel
c.execute('select key from mytable')
sqlite3.OperationalError: Could not decode to UTF-8 column 'key' with text '58 / Période'
.

Lorsque j'ai créé ma BD j'ai bien pris le soin d'indiquer que key serait de la forme TEXT.

Voici un rapide aperçu de mon script python:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
#-*- coding: utf-8 -*-
 
import sqlite3
 
def create():
    conn = sqlite3.connect("c:\mybdd.bd")
    conn.row_factory = sqlite3.Row   
    c = conn.cursor()
    c.execute('''create table mytable (key TEXT, dep TEXT, projet TEXT''')
    conn.commit()
    c.close()
 
def Save():
    liste = [str(self.txt1.GetValue()), str(self.txt2.GetValue()), str(self.txt3.GetValue())]
    conn = sqlite3.connect("c:\mybdd.bd")
    conn.row_factory = sqlite3.Row   
    c = conn.cursor()
    c.execute("""insert into mytable values ('%s','%s','%s')"""%liste)
    conn.commit()
    c.close()
 
def Read():
    conn = sqlite3.connect("c:\mybdd.bd")
    conn.row_factory = sqlite3.Row   
    c = conn.cursor()
    c.execute('''select * from mytable''')
    for row in c:
        print "%s, %s, %s" % (row[0], row[1], row[2])
        print '...'
    c.close()
J'ai essayé des encode(), decode()... (un peu tout ce qui me passait par la tête d'ailleurs ^^), mais rien.
Quelqu'un aurait il une idée pour que je puisse lire sans problème le contenu de ma BD même si celle-ci contient des caractères accentués, car là je bloque un peu?

D'avance merci