Lier différente bibliothèque

Résolu/Fermé
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020 - Modifié le 22 oct. 2020 à 11:57
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020 - 23 oct. 2020 à 15:40
Bonjour,
J'ai un devoir en NSI, et malheureusement mon prof répond a aucun de mes mail je m'en remet donc a vous.

import sqlite3
conn = sqlite3.connect('baseDonnees.db')
cursor = conn.cursor()


cursor.execute("""CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,name TEXT,age INTERGER)""")
conn.commit()

data = {"name" : "p", "age" : "a"}
cursor.execute("""INSERT INTO users(name, age) VALUES(:name, :age)""", data)
conn.commit()

cursor.close()
conn.close()

class newaccount():
    def cordonee(self):
        p=input("Prénom ?")
        a=int(input("Âge ?"))


A=newaccount()
A.cordonee()



donc comme vous le voyez je me sert de sqlite3 pour gerer ma base de donner et se qui sui après sera remplacer par du tkinter. mais le problème que je rencontre c'est que ben j'arrive pas a lier les deux.

en gros dès que l'on remplis les "cordonee" ben elle remplisse ma base de donné affin d'être réutilisable plus tard.

est-ce que vous seriez comment faire, parce que je suis dessus depuis un moment et je m'en sort toujours pas.

merci de bien vouloir m'aider

6 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 23 oct. 2020 à 14:33
#Affichage du contenu de la BDD:

après avoir inséré nom et age dans la BDD, je veux vérifier qu'ils sont bien dedans

donc j'exécute la requête SQL : 'select * from users' (sélectionner tout dans la table users)

et du coup le cursor contient la liste des enregistrements

Je les affiche en parcourant cursor:

for records in cursor:

et pour chaque records, j'affiche les éléments de chaque tuple contenu dedans

Si tu entre 'Phil' puis 12, il y a un tuple comme ceci: (1,'Phil',12)
1
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
23 oct. 2020 à 15:01
ha d'accord merci bien.
est ce que ca te dérange si je reviens te demander un ou deux truc après, parce que mon projet c'est de faire une page d'inscription, celle pour laquelle j'ai demander de l'aide, et ensuite une page connexion avec une page de profil. et, il faut que je fasse qql recherche mais si jamais je ne m'en sort pas tu pourras m'aider s'il te plait.
0
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
23 oct. 2020 à 15:40
j'ai une dernière question, est ce que il est possible d'exécuter la commande grâce a un bouton ?
voici mon code :
import sqlite3
from tkinter import *
fenetre1= Tk()
fenetre1.geometry("380x380+500+200")
fenetre1.resizable(width=NO,height=NO)

Etiquette1=Label(fenetre1,text='Prénom').place(x=100,y=45)
entree1=Entry(fenetre1,width=10)
entree1.insert(0,1)
entree1.place(x=100,y=65)

Etiquette2=Label(fenetre1,text='Age').place(x=200,y=45)
entree2=Entry(fenetre1,width=10)
entree2.insert(0,1)
entree2.place(x=200,y=65)


conn = sqlite3.connect('baseDonnees.db')
cursor = conn.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,name TEXT,age INTEGER)""")
conn.commit()

p = Etiquette1
a = Etiquette2


def Creation():
    cursor.execute("""INSERT INTO users(name, age) VALUES(?, ?)""", (p, a))
    conn.commit()

bouton1=Button(fenetre1,text='crée un nouveau compte',command=Creation)
bouton1.place(x=150,y=300)


#Affichage du contenu de la BDD
print('\nContenu : ')
cursor.execute('select * from users')
for records in cursor:
	for k in range (len(records)):
		print(records[k], end = ' ')

cursor.close()
conn.close()
fenetre1.mainloop()
0
xplom Messages postés 35283 Date d'inscription mardi 17 septembre 2013 Statut Modérateur Dernière intervention 10 septembre 2024 474
22 oct. 2020 à 12:01
Salut
Tu sais que c'est hors charte les devoirs d'école...
Bah un bon samaritain...sait on jamais
0
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
22 oct. 2020 à 12:42
Je vois pas ou est le problème de demander un coup de main sur un programme. Puis si mon prof répondait au mail que je lui envoie je serait pas là a demander de l'aide
0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557 > kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
22 oct. 2020 à 13:27
recevoir un coup de main va t'empecher de progresser: il est clair qu'il te manque les bases. il vaut mieux acquérir ces bases avant de faire des exercices plus compliqués.

https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

où dans ton programme essais-tu de lier les deux?

"dès que l'on remplis les "cordonee"": cela se passe quand dans ton programme? commence par faire un print() à ce moment-là.
0
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020 > yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024
23 oct. 2020 à 13:23
le :
        p=input("Prénom ?")
        a=int(input("Âge ?"))

c'est ça qui me permet de rentrer les "cordonee" justement, dans le cas présent le prénom et l'âge.
et sinon j'avais essayer de lier le data avec le "p" et le "a", mais ca fonctionner pas, ensuite j'ai essayer de faire deux data diffèrent mais la également je suis tomber sur une impasse.
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 22 oct. 2020 à 14:02
Bonjour kymer,

Moi, ce que je vois dans ton code c'est ca (dans l'ordre d'exécution du code):

1_ tu te connecte a la BDD baseDonnees.db

2_ tu y crée une table users (tu as écrit INTERGER au lieu de INTEGER)

3_ tu insère dans la table 2 champs : name = à la chaine de caractères "p" et age = à la chaine de caractères "a"

donc dans la table il y a ceci (pour schématiser) :

Name Age
-----------------------
"p" "a"

4_ tu fermes curseur et connexion à la BDD

5_ tu crée un objet A de la classe newaccount()

6_ tu exécute la fonction cordonee (ce serait mieux avec 2 "n", non ? :-) ) de la classe

7_ tu saisis donc nom et prénom

8_ Apres A.coordonee() : fin de programme, et donc on insère rien dans la table de la BDD
0
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
23 oct. 2020 à 13:18
oui c'est cela, et présenter comme cela j'ai l'impression que je devrai fermer le curseur et la connexion a la fin de mon programme. Est-ce que c'est cela ? j'avais fais dans cette ordre la afin de mis retrouver et de pas mélanger les bibliothèque mais si c'est cela je peux le modifier.
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
23 oct. 2020 à 13:27
Bonjour,

Si tu as bien lu ma réponse, tu vois que ca ne peut pas marcher

Ca n'est pas de la magie:

ne crois pas qu'après avoir inséré 2 chaines de caractères 'p' et 'a' dans la BDD,

il suffise de créer 2 entiers p et a et que automatiquement il vont entrer dans la base !

Ce ne te vient pas à l'idée qu'il faut insérer a et b dans la table après les avoir saisis ?

Et les lignes 9, 10, 11 sont inutiles ...
0
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
23 oct. 2020 à 13:40
si, mais j'avais oublier que la manière de programmer est différent pour chaque langage et j'avais ranger mon programme comme du html, que peut importe l'ordre du programme ca n'entrée pas en compte.
mais du coup oui maintenant que vous le dite c'est vrai que ca parait plus logique.

je sais qu'il ne suffit pas de créer ces deux entier pour qu'il s'insert automatiquement dans ma base.

et je vois pas pourquoi la ligne 9, 10 et 11 ne serve a rien, j'ai lus que c'est commande server a entrée des données dans un base de donnée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 23 oct. 2020 à 13:46
"j'ai lus que c'est commande server a entrée des données"

j'ai lu que ces commandes servaient à entrer des données

OK mais, encore une fois, je te le répète, tu entres 2 lettres a et p

ensuite, tu saisis 2 integers a et p mais tu ne les entre pas dans la base !

déplace ces lignes apres la saisie

ceci dit, html est un langage de présentation de page, pas de programmation ...
0
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
23 oct. 2020 à 13:59
si je comprend bien se que je dois faire c'est déplacer ma class jusque au dessus du data, c'est bien cela. mes ca change rien mon "p" et "a" n'est pas défini.


donne ceci
import sqlite3
conn = sqlite3.connect('baseDonnees.db')
cursor = conn.cursor()


cursor.execute("""CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,name TEXT,age INTERGER)""")
conn.commit()

class newaccount():
    def cordonee(self):
        p=input("Prénom ?")
        a=int(input("Âge ?"))


A=newaccount()
A.cordonee()

data = {"name" : p , "age" : a }#ceci

cursor.execute("""INSERT INTO users(name, age) VALUES(:name, :age)""", data)
conn.commit()

cursor.close()
conn.close()



0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
23 oct. 2020 à 14:15
Ah tu t'es trompé dans les balises de code, enfin, bon ....

Tu as laisse INTERGER au lieu de INTEGER

A quoi sert la classe ?

Moi, je ferais ça:

import sqlite3

def cordonnees():
    p=input("Prénom ? ")
    a=int(input("Âge ? "))
    return(p,a)

conn = sqlite3.connect('baseDonnees.db')
cursor = conn.cursor()

cursor.execute("""CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,name TEXT,age INTEGER)""")
conn.commit()

p,a = cordonnees()

cursor.execute("""INSERT INTO users(name, age) VALUES(?, ?)""", (p, a)) 
conn.commit()

#Affichage du contenu de la BDD
print('\nContenu : ')
cursor.execute('select * from users')
for records in cursor:
	for k in range (len(records)):
		print(records[k], end = ' ')

cursor.close()
conn.close()
0
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
23 oct. 2020 à 14:22
haaa, excuse j'avais pas compris le problème avec INTERGER et INTEGER.

juste tu veux bien m'expliquer se que tu as fais a la partie après le #Affichage du contenu de la BDD s'il te plait.

sinon je comprend a peu près le code, et merci beaucoup du coup.
0