Métodos de recuperación de datos
Descripción general de la recuperación de datos en SQLite
La recuperación de datos es una operación crítica en la gestión de bases de datos. SQLite proporciona múltiples métodos para obtener datos de manera eficiente.
graph LR
A[Data Retrieval Methods] --> B[fetchone()]
A --> C[fetchall()]
A --> D[fetchmany()]
A --> E[Parameterized Queries]
Métodos básicos de recuperación
1. Obtener una sola fila
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. Obtener todas las filas
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)
Técnicas avanzadas de recuperación
Consultas parametrizadas
Tipo de consulta |
Descripción |
Beneficio de seguridad |
Parámetros posicionales |
Marcadores ? |
Previene la inyección SQL |
Parámetros nombrados |
Marcadores :name |
Más legible |
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étodos de iteración del cursor
Iterar a través de los resultados
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)
Consideraciones de rendimiento
Limitar los conjuntos de resultados
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()
Manejo de errores en la recuperación de datos
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 []
Puntos clave para los desarrolladores de LabEx
- Utilice consultas parametrizadas para la seguridad
- Elija métodos de recuperación adecuados
- Implemente el manejo de errores
- Considere el rendimiento con conjuntos de datos grandes
- Utilice técnicas de iteración del cursor
Al dominar estos métodos de recuperación de datos, trabajará de manera eficiente con bases de datos SQLite en sus proyectos de Python en LabEx.