Lier différente bibliothèque [Résolu]

Signaler
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020
-
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020
-
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

Messages postés
494
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
31 octobre 2020
66
#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)
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020

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.
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020

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()
Messages postés
29591
Date d'inscription
mardi 17 septembre 2013
Statut
Membre
Dernière intervention
31 octobre 2020
218
Salut
Tu sais que c'est hors charte les devoirs d'école...
Bah un bon samaritain...sait on jamais
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020

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
Messages postés
12880
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
31 octobre 2020
718 >
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020

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/faq/10925-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à.
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020
>
Messages postés
12880
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
31 octobre 2020

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.
Messages postés
494
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
31 octobre 2020
66
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
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020

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.
Messages postés
494
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
31 octobre 2020
66
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 ...
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020

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.
Messages postés
494
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
31 octobre 2020
66
"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 ...
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020

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()



Messages postés
494
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
31 octobre 2020
66
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()
Messages postés
17
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
29 octobre 2020

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.