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 'Get Column Values: '
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 '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
Liens | Site |
---|---|
sqlite3 — DB-API 2.0 interface for SQLite databases | Python Doc |
Python/sqlite: get column values as a list/tuple from rows where other columns have certain values | stackoverflow |
How do I select a column by its name? (Python & SQLite3) | stackoverflow |
Retrieve SQLITE data with python | stackoverflow |