Update dans une table innodb
Bonjour à tous,
Je me débats avec une malheureuse petite table innodb de rien du tout...
Elle a un id autoincrémenté en clé primaire et 5 autres colonnes ordinaires sans clés étrangères... et je ne suis pas foutue d'arriver à faire un update...:evilred:
J'ai un script python qui appelle cette table pour faire la requete sur toute mes lignes...
Code:
1 2 3 4 5 6 7 8
| requete_select_id = "select id from ma_table order by id;"
liste = execute_requete (curseur, requete_select_id) ## On obtient un tuple (id,)
## id = tuple[0]
for tuple in liste:
requete_update_nom = "UPDATE ma_table SET col_nom = \"ok\" where id = " + tuple[0] + " order by id limit 1;";## tuple[0] est un int autoincrementé à chaque ligne
execute_requete (curseur, requete_update_nom)## execute_requete est une fonction pour lancer la requête |
revient à exécuter par exemple, (qd tuple[0] = 5):
Code:
UPDATE ma_table SET col_nom = "ok" where id = 5 order by id limit 1;
la boucle renvoie tous les id de la table 1 par 1.
le tour suivant donnera :
Code:
UPDATE ma_table SET col_nom = "ok" where id = 6 order by id limit 1;
...etc
Mais asbolument aucun champs n'est update, et je ne comprends rien aux explicationsde verrouillages du manuel... :cry:
Je voudrais pouvoir update toute ma colonne au fur et à mesure que ma boucle tourne...
ça ne doit pas être bien compliqué qd même... 8O
le script python fait les 10000 lignes sans lever d'errreurs, ni python , ni mysql. Par contre si je fais la requete à la main pour une seue ligne, mysql me renvoie un time out...
Code:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
j'utilise 2 fonctions python :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # Etablit la connection avec la base
def connection():
#connection à la banque (attention à changer selon l'utilisateur.. etc)
bque = MySQLdb.connect(db="madb", user="moua")
#ouverture d'un curseur dans la banque
cursr = bque.cursor()
return cursr
# Fetch le curseur
def execute_requete (cursr,requete):
# Execute_requete de la requete
exe = cursr.execute(requete)
# Recuperation du resutat
rst = cursr.fetchall()
return rst |
Code:
1 2 3
| #Connection
#=====================
curseur = connection() |
Merci beaucoup par avance si vous pouvez me debloquer...