Problème de colonnes

Bonjour,

import sqlite3
conn = sqlite3.connect('test2') # OK MAIS VOIR COMMENT AJOUTEr UNE COLONNE MËME SI PAS UTILE POUR TOUS !!!!!!!!!!!!!!!!!!!!!!!!!
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users(
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
name TEXT,
adresse TEXT,
ville TEXT,
tel TEXT

)
""")

conn.commit()

# Insérer des données 1) colonnes = 4 (ne pas tenir compte ID = 0 indexation auto - 2) valeur de la colonne ex: nom, adresse, ville, tel
#--------------------
cursor.execute("""
INSERT INTO users(name, adresse, ville, tel) VALUES(?, ?, ?, ?)""", ("Moulin Jean", "Rue Haute 102", "Mons", "0478149622"))

cursor.execute("""
INSERT INTO users(name, adresse, ville, tel) VALUES(?, ?, ?, ?)""", ("renard Jean", "Rue Haute 102", "Mons", "0579136521"))

# Insérer des nouvelles données:
# -----------------------------

# Pour modifier des entrées:
# -------------------------

cursor.execute("""UPDATE users SET tel = ? WHERE id = 2""", ("025785879",)) # modification du n° tel.

#********************************************** Toujours enregistrer après modification de table ********************************************************************************************
# ------------------------------------------------
# Récupérer les données
#----------------------

cursor.execute("""SELECT id, name, adresse, ville, tel FROM users""")
rows = cursor.fetchall()
for row in rows:
print('{0} : {1} - {2} - {3} - {4}'.format(row[0], row[1], row[2], row[3], row[4]))

Bonjour,

Bonjour
Une table créée avec SQL3 peut-elle être modifier après avoir été créée
Je sais qu'on peut ajouter une données complète mais par ex :ajouter une colonne qui ne sera utile que pour une personne
Ou faut -il créer une colonne supplémentaire au départ
Merci pour l'aide

Configuration: Windows / Chrome 83.0.4103.106

2 réponses

  1. Modérateur
    Bonjour,

    Déjà, lorsque tu postes du code sur le forum, il faut utiliser les BALISES DE CODE.
    Tuto à lire ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

    Ensuite,
    Techniquement, rien ne t’empêche de rajouter de nouveaux champs dans tes tables ( ce que tu appelle les colonnes)....
    Mais en règle générale, on conçoit / créé la structure de la bdd au départ... et on évite d'y toucher par la suite...

    Si tu n'as qu'une seule "colonne" à ajouter .. même si pas utilisée par la suite... autant la créer tout de suite dans ta table...
    Mais si tu viens à avoir plusieurs "colonnes" à créer.. là, c'est le modèle de ta bdd qu'il faut revoir. Si tu as des valeurs "optionnelles" à renseigner, je pense qu'une table supplémentaire serait préférable pour les stocker...

    Un table du genre :
    users_options
    - id
    - id_user
    - option_libelle
    - option_value

    NB: Sqlite n'est pas Mysql ... je déplace donc ta question.
    1. Bonjour
      Merci pour ta réponse
      Est-ce que jai bien utiliser les balises de code?

      # python doctor

      import sqlite3
      conn = sqlite3.connect('test2') # OK MAIS VOIR COMMENT AJOUTEr UNE COLONNE MËME SI PAS UTILE POUR TOUS !!!!!!!!!!!!!!!!!!!!!!!!!
      cursor = conn.cursor()
      cursor.execute("""
      CREATE TABLE IF NOT EXISTS users(
      id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
      name TEXT,
      adresse TEXT,
      ville TEXT,
      tel TEXT

      )
      """)

      conn.commit()

      # Insérer des données 1) colonnes = 4 (ne pas tenir compte ID = 0 indexation auto - 2) valeur de la colonne ex: nom, adresse, ville, tel
      #--------------------
      cursor.execute("""
      INSERT INTO users(name, adresse, ville, tel) VALUES(?, ?, ?, ?)""", ("Moulin Jean", "Rue Haute 102", "Mons", "0478149622"))

      cursor.execute("""
      INSERT INTO users(name, adresse, ville, tel) VALUES(?, ?, ?, ?)""", ("Renard Jean", "Rue Haute 102", "Mons", "0579136521"))

      # Insérer des nouvelles données:
      # -----------------------------

      # Pour modifier des entrées:
      # -------------------------

      cursor.execute("""UPDATE users SET tel = ? WHERE id = 2""", ("025785879",)) # modification du n° tel.

      #********************************************** Toujours enregistrer après modification de table ********************************************************************************************
      # ------------------------------------------------
      # Récupérer les données

      1. Modérateur

        Est-ce que jai bien utiliser les balises de code?

        Non.. il faut que ton code soit dedans....

        Comme ça
        # python doctor
        
        
        import sqlite3
        conn = sqlite3.connect('test2') # OK MAIS VOIR COMMENT AJOUTEr UNE COLONNE MËME SI PAS UTILE POUR TOUS !!!!!!!!!!!!!!!!!!!!!!!!!
        cursor = conn.cursor()
        cursor.execute("""
        CREATE TABLE IF NOT EXISTS users(
        id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
        name TEXT,
        adresse TEXT,
        ville TEXT,
        tel TEXT
        
        )
        """)