Ajouter une colonne à une table existante avec sqlite et python

Published: 15 novembre 2014

DMCA.com Protection Status

Pour ajouter une colonne à une table existante avec sqlite il faut utiliser la commande Sqlite: ALTER TABLE:

ALTER TABLE NomTable ADD COLUMN NomNouvelleColonne ColonneType

En reprenant l'exemple de Créer une base de données et une table avec sqlite3 de python, voici un exemple simple de modification d'une table en passant par python et sqlite3:

import sqlite3

CreateDataBase = sqlite3.connect(':memory:')

QueryCurs = CreateDataBase.cursor()

def CreateTable():
    QueryCurs.execute('''CREATE TABLE Clients
    (id INTEGER PRIMARY KEY, Nom TEXT,Rue TEXT,Ville TEXT, Region TEXT, Note REAL)''')

def AddEntry(Nom,Rue,Ville,Region,Note):
    QueryCurs.execute('''INSERT INTO Clients (Nom,Rue,Ville,Region,Note)
    VALUES (?,?,?,?,?)''',(Nom,Rue,Ville,Region,Note))

CreateTable()

AddEntry('Toto','Rue 1','Lille','Nord',105.2)
AddEntry('Bill','Rue 2','Fourmies','Nord',105.2)
AddEntry('Ben','Rue 3','Lille','Nord',105.2)
AddEntry('Paul','Rue 4','Lille','Nord',105.2)

CreateDataBase.commit()

QueryCurs.execute('SELECT * FROM Clients')


for i in QueryCurs:
    print "\n"
    for j in i:
        print j

#---------- Add Column to Table Client ----------#

QueryCurs.execute('ALTER TABLE Clients ADD COLUMN Age INTEGER')

QueryCurs.execute('SELECT * FROM Clients')

for i in QueryCurs:
    print "\n"
    for j in i:
        print j

QueryCurs.close()

qui donne:

1
Toto
Rue 1
Lille
Nord
105.2
None


2
Bill
Rue 2
Fourmies
Nord
105.2
None


3
Ben
Rue 3
Lille
Nord
105.2
None


4
Paul
Rue 4
Lille
Nord
105.2
None

Note: pour avoir une valeur par défaut il faut utiliser la commande (par exemple 10 pour l'age):

QueryCurs.execute('ALTER TABLE Clients ADD COLUMN Age INTEGER default 10')

Recherches associées