Forum EduPython

Echanges autour d'EduPython.

Vous n'êtes pas identifié(e).

#1 2020-04-09 21:24:56

pierre
Membre
Inscription : 2017-12-29
Messages : 12

input() et le temps de reponse.

pour saisir une requette assez longue pour sqlite, j'obtiens souvent une réponse "TimeoutError: result expired"
Comment faire pour: soit allonger le temps de saisie ou pour intercepter l'erreur.
Cela fait un moment que je cherche mais à 71 ans j'ai du mal à trouver une solution.

Si une bonne âme  ....
Merci d'avance.
Voici mon petit bout de programme issue de G. Swinnen.

import sqlite3

ff="Musiciens.sq3"
conn=sqlite3.connect(ff)
cur=conn.cursor()


while 1:
    line= input()           # entrer la requette sans les guiellemets
    print(line)

    if line == "":
        break

    try:
        cur.execute(line)
    except  :
        print("erreur")
    else:
        for m in cur:
            print(m)
print()
choix = input("enregistrer oui/nom")
if choix[0] =="0" or choix[0] =="o":
    conn.commit()
else:
    conn.close()

Hors ligne

#2 2020-04-18 09:31:23

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 283

Re : input() et le temps de reponse.

Bonjour,

     Je n'ai pas de réponse, si ce n'est stocker dans une liste les saisies et ensuite à ce moment ouvrir la base et enregistrer.

Bonne journée,
Vincent

Hors ligne

#3 2020-04-20 09:28:48

pierre
Membre
Inscription : 2017-12-29
Messages : 12

Re : input() et le temps de reponse.

J'ai détourné le problème en passant par Entry mais ce n'est pas très élégant.
de plus lorsque je veux ajouter la possibilité de choisir un fichier avec askopenfilename, cela ne fonctionne plus et je ne comprends pas.

import tkinter as aa
# recupération de l'entrée par "entry"
import sqlite3

ff="D:/EduPython/SQLITE/Musiciens.sq3"
conn=sqlite3.connect(ff)
cur=conn.cursor()

def afficheentry():
    fentop=aa.Toplevel(racine0,bg="yellow")
    fentop.geometry("700x700+800+50")
    bouton2=aa.Button(fentop, text='effacer', command=fentop.destroy).pack(side=aa.BOTTOM)
    L=aa.Label(fentop,text=texte1.get())
    L.pack()
    try:
        cur.execute(texte1.get())

        result=aa.StringVar()
        result.set("resultat")
        LL=aa.Label(fentop, text=result.get()).pack()

        for m in cur:
            print(m)
            LLL=aa.Label(fentop, text=m).pack()
    except:
        LL=aa.Label(fentop,text="erreur").pack()



racine0=aa.Tk()
racine0.geometry("700x300+50+50")
racine0.aspect(3,2,5,3)



invite0=aa.Label(racine0,text='cliquer et saisir',width=20,height=3, fg="navy")
invite0.pack()


# pour saisir la requette
texte1=aa.StringVar()   #variable chaine pour saisir du texte
texte1.set("select ")
saisie0=aa.Entry(textvariable=texte1, width=100)
saisie0.pack()


# pour afficher "entry"
bouton0=aa.Button(racine0,text="entry",command=afficheentry)
bouton0.pack(padx=10,pady=10)




bouton1=aa.Button(racine0,text="quitter",bitmap="error",width=80,height=25,
compound=aa.RIGHT,command=racine0.destroy)
bouton1.pack(side=aa.BOTTOM,padx=10,pady=5)




racine0.mainloop()
print(texte1.get())

conn.close()

Hors ligne

Pied de page des forums