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:
J'ai essayé des encode(), decode()... (un peu tout ce qui me passait par la tête d'ailleurs ^^), mais rien.
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()
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
Partager