CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Besoin d'aide - Python, SQL

RoiPotiron3
RoiPotiron3
Niveau 10
13 juin 2022 à 17:08:29

j'ai vraiment besoin d'aide sur une petite appli desktop que je suis en train de développer.
Je fais correspondre un programme python et une base de donnée locale SQLite,
le reste de mon programme fonctionne bien, mais ces 3 fonctions posent problèment : ils bloquent systématiquement le noyau (sous Spyder) de L'IDE et la base de donnée (DataBase is locked). Que puis-je faire ?
je joins les lignes de code :


def achat(cbb_produit,sisie_idd_vente,L8):
    produit=chaine2list(cbb_produit.get())[0]
    idd=saisie_idd_vente.get()
    curseur.execute("select prix from inventaire where produit=?",[produit])
    prix=curseur.fetchall()[0]
    curseur.execute("select credit from adherent where id=?",[idd])
    crédit=curseur.fetchall()[0][0]
    connexion.commit()
    if prix[0]>crédit : 
        L8.configure(text=("pas assez de crédit (reste: ",crédit,")"))
        
    else:
        rest=débit(produit,crédit,prix,idd)
        L8.configure(text=("reste ",rest))
        maj_stock(produit,stock)
   
    
def débit(produit,crédit,prix,idd):
    solde=crédit-prix[0]
    curseur.execute("update  adherent set credit=? where id=?",[solde,idd])
    connexion.commit()
    return(solde)
    

def maj_stock(produit,stock):
    curseur.execute("select stock from inventaire where produit=?",[produit])
    qte=curseur.fetchall()[0][0]
    qte=qte-1
    curseur.execute("update inventaire set stock=? where produit=?",[qte,produit])
    maj_stock(produit, stock)
    connexion.commit()

Je suis pas dev, ne jugez pas sévèrement la qualité du code svp

godrik
godrik
Niveau 30
13 juin 2022 à 17:39:51

C'est un problème qui arrive quand la base est en cours d'utilisation par une application et tu essayé d'en avoir une deuxième qui y accède en même temps. Le mécanisme est qu'un fichier lock est créer pour noter que la base est en cours d'utilisation.

Ici probablement ton application a crashé pendant l'utilisation et c'est ça qui cause le problème.

Efface le fichier lock et ça devrait marcher.

RoiPotiron3
RoiPotiron3
Niveau 10
13 juin 2022 à 20:55:58

Le 13 juin 2022 à 17:39:51 :
C'est un problème qui arrive quand la base est en cours d'utilisation par une application et tu essayé d'en avoir une deuxième qui y accède en même temps. Le mécanisme est qu'un fichier lock est créer pour noter que la base est en cours d'utilisation.

Ici probablement ton application a crashé pendant l'utilisation et c'est ça qui cause le problème.

Efface le fichier lock et ça devrait marcher.

parfait, ça marche
merci !

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment