Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonctions avec sqlite3

fonctions sans aucun effet sur la base de données

Sujet résolu
    7 décembre 2021 à 15:35:25

    Bonjour, j'essaye de créer une base de données depuis python, et je me rends compte que mes fonctions n'apporte aucun changement quand elles sont appelés, comment cela se fait'i l? Merci.
    import sqlite3
    
    # Variable global
    cursor = ""
    Open_data_base =""
    
    # Fonctions
    def Open(base):
        global cursor, Open_data_base
        Open_data_base = sqlite3.connect(base)
        cursor = Open_data_base.cursor()
    
    
    def Close():
        global Open_data_base
        Open_data_base.commit()
        Open_data_base.close()
    
    
    def Add(table_name, values = []):
        global cursor, Open_data_base
        cursor.execute('''INSERT INTO {} ({})
        VALUES (?,?,?,?)''',()).format(table_name, values)
    
    def Supp(table_name, attribute, values):
        global cursor, Open_data_base
        supp = "DELETE FROM {} WHERE {} = {}".format(table_name, attribute, values)
    
    
    def CreateTable(table_name, attribute = []):
        global cursor, Open_data_base
    
        if table_name == "Identity":
            Identity_table()
    
        elif table_name == "Phone_number":
            PhoneNumber_table()
    
        elif table_name == "Repertory":
            Repertory_table()
    
        elif table_name == "Mail_address":
            Mail_address_table()
    
        elif table_name == "Address":
            Address_table()
    
    def Identity():
        cursor.execute('''CREATE TABLE Identity
        (first_name STRING, name TEXT, age INTEGER,
        Id_mail_address INTEGER PRIMARY KEY,
        nationality TEXT,
        kind TEXT,
        Id TEXT, Id_address INTEGER
         )''')
    
    def Phone_number():
        cursor.execute('''CREATE TABLE Phone_number
        ( indicatif TEXT, phone_number INT, Id_phone_number INT PRIMARY KEY
         )''')
    
    def Repertory():
        cursor.execute('''CREATE TABLE Repertory
        ( Id_repertory INTEGER, phone_number INT
         )''')
    
    def Mail_address():
        cursor.execute('''CREATE TABLE Mail_address
        ( Id_mail_address INT PRIMARY KEY, mail_address TEXT
         )''')
    
    def Address():
        cursor.execute('''CREATE TABLE Address
        ( number INT, rue TEXT
         )''')
    
    
    
    
    • Partager sur Facebook
    • Partager sur Twitter
      7 décembre 2021 à 15:49:39

      Bonjour,

      Ton code n'est pas complet, montre-nous comment tu lance tes fonctions

      Elle est ou la fonction Identity_table() ? (appelée ligne 34)

      A quoi sert attribute = [] dans def CreateTable() ?

      Dans Close(), avant Open_data_base.close() il faudrait faire cursor.close()

      Encore une fois, les lignes 4 et 5 sont inutiles

      -
      Edité par Phil_1857 7 décembre 2021 à 16:06:09

      • Partager sur Facebook
      • Partager sur Twitter
        7 décembre 2021 à 18:59:29

        il te manque le remplissage des champs paramétrés dans ton insert (histoire de remplacer les ? par des valeurs; là tu remplaces les les 2 {})
        • Partager sur Facebook
        • Partager sur Twitter
          8 décembre 2021 à 15:33:00

          Je disais:

          "les lignes 4 et 5 sont inutiles"

          En fait, elles sont même fausses, cursor et OpenDatabase sont initialisées comme des string, alors que ce sont des objets d'une classe

          • Partager sur Facebook
          • Partager sur Twitter
            9 décembre 2021 à 11:32:59

            Hello Matys,

            Alors, as-tu de la réussite ?

            • Partager sur Facebook
            • Partager sur Twitter
              25 décembre 2021 à 13:49:34

              Phil_1857 a écrit:

              Hello Matys,

              Alors, as-tu de la réussite ?

              Salut oui j'ai réussi, ce qui posé problème il me semble que ce sont les variables globales, je l'ai ai donc supprimé et tout à fonctionner !!

              :) 

              • Partager sur Facebook
              • Partager sur Twitter
                25 décembre 2021 à 15:33:19

                MatysLepretre a écrit:

                Salut oui j'ai réussi, ce qui posé problème il me semble que ce sont les variables globales, je l'ai ai donc supprimé et tout à fonctionner !!

                Bonjour,

                Sujet résolu

                Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)
                • Partager sur Facebook
                • Partager sur Twitter

                Fonctions avec sqlite3

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown