Clé étrangère non reconnu en Mysql python
Résoluyg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir la team avant de vous poser mon problème je vais vous mettre dans le contexte je bosse sur un projet d'une minibanque que je dévéloppe en Python et MySql bref le souci est que j'ai deux tables dans la base de donnée CSIBANK que j'ai crée en mysql dont client et compte. Donc la table compte possède un champ 'id_client' comme clé étrangère faisant référence à la clé primaire de la table client. et Maintenant le programme doit se comporter de telle en sorte que ,l'utilisateur entre ses informations et automatiquement ses informations sont enregistrés dans les tables client et compte mais le souci est que le programme plant à cause du fait que lors de l'insertion des données dans la table compte le SGBD demande de renseigner la clé étrangère id_cli pour continuer
au niveau de val2 le SGBD me demande de renseigner la clé étrangère or je veux que le nouvel id_cli générer par la BD soit automatiqueemnt utilisé lors de la création du compte
voici le code python:
import mysql.connector
connexion= mysql.connector.connect(host='localhost',database= 'csibank', user='root', password='')
curseur= connexion.cursor()
print('Bienvenue sur la CSI BANK')
while True:
print("1.Créer un compte 2.Dépot d'argent 3.Retrait d'argent 4.Détails du compte 5.Sortie ")
choix= int(input('Entrez votre choix: '))
choix_list= [1,2,3,4,5]
try:
for choixs in choix_list:
if choix==1:
dateA='CURRENT_TIMESTAMP'
nom= str(input('Entrer votre nom et prénom: '))
sexe=str(input('Entrer votre sexe M pour maxulin et F pour Féminin: '))
sexe_list= ['M','F']
if sexe in sexe_list:
type_client=str(input('Quelle est le type de client P ou M?: '))
type_list= ['P','M']
if type_client in type_list:
age_client=int(input("Entrer l'age du client: "))
if ((age_client>=18) & (age_client<=75)):
type_compt= str(input('Entrez le type du compte E ou C: '))
typecompt_list= ['E','C']
if type_compt in typecompt_list:
IBAN= int(input("ENtrez l'IBAN du compte SVP: "))
solde= int(input('Entrer le montant à verser dans le compte: '))
if solde>1000:
req_sql1= 'insert into client(id_cli,nom_cli,sexe,type_cli,age_cli) values (%s,%s,%s,%s,%s)'
val= (curseur.lastrowid,nom,sexe,type_client,age_client)
req_sql2= 'insert into compte (id_compte,dateA,type_compte,IBAN,solde,id_cli) values (%s,%s,%s,%s,%s,%s)'
val2= (curseur.lastrowid,dateA,type_compt,IBAN,solde,id_cli)
curseur.execute(req_sql1,val)
curseur.execute(req_sql2,val2)
connexion.commit()
print(f"{nom} votre compte a été créé avec succès")
else:
print("Le solde du compte doit etre supérieur à 1000")
break
else:
print("Entrer un type de compte valide")
break
else:
print("Vous ne pouvez pas créer un compte dans notre banque en raison de votre age")
break
else:
print("Entrer un type de client valide")
break
else:
print("Entrez une valeur valide")
break
elif choix==2:
no_compte=input("entrer l'id du compte: ")
mont_de= int(input('Entrez le montant à déposer dans votre compte: '))
id_caiss= input('Quel est Votre id caissier(e): ')
id_clien= input("Entrez l'id du client: ")
id_trans=input('Entrez un id de transaction')
typeo= "d"
datet= 'CURRENT_TIMESTAMP'
req_sql3= 'insert into transactions(id_trans,datet,montant,typet,id_cais,id_compte,id_cli) values (%s,%s,%s,%s,%s,%s,%s)'
val3=(id_trans,datet,mont_de,typeo,id_caiss,no_compte,id_clien)
curseur.execute(req_sql3,val3)
curseur.execute("update compte set solde= solde+'"+str(mont_de)+ "' where id_compte='"+ no_compte + "'")
print(f"Le dépot de {mont_de} a été correctement effectué sur le compte n°{no_compte}")
connexion.commit()
break
else:
print("Entrer un nombre correct")
break
except:
print("Quelque chose s'est mal passé")
voici le MLD de la base de donnée:
client(id_client, nom_cli,sexe_cli,type_cli)
compte(id_compte,dateA,type_compte,IBAN,Solde,#idcli)
informaticien(id_info,nom_info,type_info,sexe_info)
caissière(id_caissiere,nom_cais,prenom_cais)
transaction(id_transaction,datet,montant,typet,libelle,#id_caissiere,#id_compte,#id_client)
acceder(#id_compte,#id_info,numoperation)
client(id_client, nom_cli,sexe_cli,type_cli)
compte(id_compte,dateA,type_compte,IBAN,Solde,#idcli)
informaticien(id_info,nom_info,type_info,sexe_info)
caissière(id_caissiere,nom_cais,prenom_cais)
transaction(id_transaction,datet,montant,typet,libelle,#id_caissiere,#id_compte,#id_client)
acceder(#id_compte,#id_info,numoperation)
Merci de m'aider SVP
- Clé étrangère non reconnu en Mysql python
- Cle usb non reconnu - Guide
- Clé windows 8 - Guide
- Formater clé usb - Guide
- Clé usb - Accueil - Stockage
- Citizen code python avis - Accueil - Outils
1 réponse
Bonjour,
A l'avenir, pour poster du code sur le forum, merci d'utiliser l'icone prévue à cet effet lorsque tu rédiges ton message.
Ensuite, pour ton souci, il suffit de récupérer le "last insert id".
Pour ça, tu peux regarder par ici : https://www.google.com/search?q=python+mysql+last+insert+id
Ok Compris merci
bonjour, Peux-tu alors marquer la discussion comme résolue?