Data Retrieval Methods
Aperçu de la récupération de données dans SQLite
La récupération de données est une opération critique dans la gestion des bases de données. SQLite propose plusieurs méthodes pour extraire efficacement les données.
graph LR
A[Data Retrieval Methods] --> B[fetchone()]
A --> C[fetchall()]
A --> D[fetchmany()]
A --> E[Parameterized Queries]
Méthodes de récupération de base
1. Récupérer une seule ligne
import sqlite3
def fetch_single_user(user_id):
with sqlite3.connect('labex_users.db') as conn:
cursor = conn.cursor()
cursor.execute('SELECT * FROM users WHERE id = ?', (user_id,))
user = cursor.fetchone()
return user
## Example usage
result = fetch_single_user(1)
print(result)
2. Récupérer toutes les lignes
def fetch_all_users():
with sqlite3.connect('labex_users.db') as conn:
cursor = conn.cursor()
cursor.execute('SELECT * FROM users')
users = cursor.fetchall()
return users
## Example usage
all_users = fetch_all_users()
for user in all_users:
print(user)
Techniques de récupération avancées
Requêtes paramétrées
Type de requête |
Description |
Avantage en matière de sécurité |
Paramètres positionnels |
Placeholders ? |
Empêche les injections SQL |
Paramètres nommés |
Placeholders :name |
Plus lisible |
def search_users(name=None, age=None):
with sqlite3.connect('labex_users.db') as conn:
cursor = conn.cursor()
## Dynamic query with optional parameters
query = 'SELECT * FROM users WHERE 1=1'
params = []
if name:
query += ' AND name LIKE ?'
params.append(f'%{name}%')
if age:
query += ' AND age = ?'
params.append(age)
cursor.execute(query, params)
return cursor.fetchall()
## Usage examples
print(search_users(name='John'))
print(search_users(age=25))
Méthodes d'itération du curseur
Itérer à travers les résultats
def iterate_users():
with sqlite3.connect('labex_users.db') as conn:
cursor = conn.cursor()
cursor.execute('SELECT * FROM users')
## Direct iteration
for row in cursor:
print(row)
## Alternative iteration method
def cursor_iteration():
with sqlite3.connect('labex_users.db') as conn:
cursor = conn.cursor()
cursor.execute('SELECT * FROM users')
while True:
row = cursor.fetchone()
if row is None:
break
print(row)
Limiter les ensembles de résultats
def fetch_limited_users(limit=10):
with sqlite3.connect('labex_users.db') as conn:
cursor = conn.cursor()
cursor.execute('SELECT * FROM users LIMIT ?', (limit,))
return cursor.fetchall()
## Pagination example
def paginate_users(page=1, per_page=10):
offset = (page - 1) * per_page
with sqlite3.connect('labex_users.db') as conn:
cursor = conn.cursor()
cursor.execute(
'SELECT * FROM users LIMIT ? OFFSET ?',
(per_page, offset)
)
return cursor.fetchall()
Gestion des erreurs lors de la récupération de données
def safe_data_retrieval(query, params=None):
try:
with sqlite3.connect('labex_users.db') as conn:
cursor = conn.cursor()
if params:
cursor.execute(query, params)
else:
cursor.execute(query)
return cursor.fetchall()
except sqlite3.Error as e:
print(f"An error occurred: {e}")
return []
Points clés pour les développeurs LabEx
- Utilisez des requêtes paramétrées pour des raisons de sécurité
- Choisissez les méthodes d'extraction appropriées
- Mettez en œuvre une gestion des erreurs
- Pensez aux performances avec de grands ensembles de données
- Utilisez les techniques d'itération du curseur
En maîtrisant ces méthodes de récupération de données, vous travaillerez efficacement avec les bases de données SQLite dans vos projets Python chez LabEx.