Bonjour à tous. J'essaie de traiter et de remplacer les données d'un tableau d'une base de données; plus précisément celles correspondant à la colonne tags d'un tableau facts (en utilisant au passage la colonne id des identifiants).

Le code est le suivant:

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
# -*- coding: utf-8 -*-
 
import sqlite3, re
 
def parseTags(tags):
	"Modification des tags"
	# J'ai remplacé la vraie fonction par celle-là (qui n'a pas de sens) pour simplifier
	return tags + "ZZZ"
 
connexion = sqlite3.connect('/home/identifiant/chemin/fichier.db')
cursor = connexion.cursor()
 
selectSql = cursor.execute("select id, tags from facts ORDER BY id;")
i = 0
for idt, tag in selectSql:
	tag = parseTags(tag)
	sql = "update facts set tags='%s' where id='%i'" %(tag, idt)
	cursor.execute(sql) ###
	i += 1
 
print "nombre d'itération(s):", i
La boucle for n'est itéré qu'une seule fois au lieu des 5000 et quelques prévues. Ceci est dû à l'utilisation de cursor.execute(sql) (marqué ### dans le code) car sans cette ligne il y a bien 5000 et quelques itérations.

Quel est le problème?