Bonjour,
J'utilise web2py (python 2.5) pour développer une application dans laquelle il arrive que plusieurs utilisateurs essayent d'écrire dans une base de donnée sqlite au même instant, ce qui est appartement impossible avec sqlite (système de verrous).
J'aimerai donc arriver à attraper une exception que serait levée lorsque plusieurs utilisateurs tentent d'écrire la base en même temps.
Seulement je n'y arrive pas, et je ne comprend pas pourquoi.
Voila ce que j'ai :
Selon moi le code devrait imprimer sur l'écran le message d'erreur, mais ce n'est pas le cas. J'ai le programme qui s'arrête avec l'info suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 def MyFunc(): import MySQLdb try: db(db.magasin.client==session.username).update(present='oui') except MySQLdb.OperationalError: print "Erreur ??! veuillez attendre" #la structure de la requête sql est particulière mais fonctionne correctement. return dict()
Alors pourquoi je ne catch rien ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2OperationalError: database is locked
J'ai donc essayé avec le code suivant pour essayer de voir quel type d'erreur est lancé :
ce qui ma affiché :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 def MyFunc(): try: db(db.magasin.client==session.username).update(present='oui') except Exception, e: print "exception ? ", e return dict()
Quelqu'un pourrai-t'il me donner un coups de pouce ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2exception ? database is locked
Merci
Partager