Comment accéder aux valeurs des colonnes d'une table avec sqlite3 de python ?

Published: 30 septembre 2014

DMCA.com Protection Status

Pour accéder aux valeurs des colonnes d'une table avec sqlite3, il faut passer par fetchall(), comme dans cet exemple:

QueryCurs.execute('Select * from Clients WHERE Ville=Fourmies')
Values = QueryCurs.fetchall()
print Values
print type(Values),type(Values[0])

Fetchall retourne alors une liste de "tuples" contenant les valeurs des colonnes de la table. Pour accéder à une valeur particulière il suffit alors de procéder, par exemple, comme suit:

Values[i][j]

avec i,j correspondant au tuple et à la valeur recherchée respectivement. Un exemple simple complet:

import sqlite3

CreateDataBase = sqlite3.connect('MyDataBase.db')

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

print 
print 'Get Column Values: '
print

print 'Test 1'
QueryCurs.execute('Select * from Clients WHERE Ville=?',('Fourmies',))
Values = QueryCurs.fetchall()
print Values
print type(Values),type(Values[0])
print Values[0][0], Values[0][1], Values[0][2], Values[0][3], Values[0][4]

print
print 'Test 2'
QueryCurs.execute('Select * from Clients WHERE Ville=?',('Lille',))
Values = QueryCurs.fetchall()
print Values
for i in range(len(Values)):
    print Values[i][0], Values[i][1], Values[i][2], Values[i][3], Values[i][4]

QueryCurs.close()

qui donne

1
Toto
Rue 1
Lille
Nord
105.2

2
Bill
Rue 2
Fourmies
Nord
105.2

3
Ben
Rue 3
Lille
Nord
105.2

4
Paul
Rue 4
Lille
Nord
105.2

Get Column Values:

Test 1
[(2, u'Bill', u'Rue 2', u'Fourmies', u'Nord', 105.2)]
<type 'list'> <type 'tuple'>
2 Bill Rue 2 Fourmies Nord

Test 2
[(1, u'Toto', u'Rue 1', u'Lille', u'Nord', 105.2), (3, u'Ben', u'Rue 3', u'Lille', u'Nord', 105.2), (4, u'Paul', u'Rue 4', u'Lille', u'Nord', 105.2)]
1 Toto Rue 1 Lille Nord
3 Ben Rue 3 Lille Nord
4 Paul Rue 4 Lille Nord

Recherches associées