Módulo SQLite3 de Python
El módulo sqlite3 te permite usar bases de datos SQLite directamente desde Python, sin un servidor de base de datos aparte.
import sqlite3
SQLite es una buena opción para aplicaciones pequeñas, herramientas locales, pruebas y para aprender SQL. La base de datos puede vivir en un solo archivo o solo en memoria con ':memory:'.
Conectarse a una base de datos
SQLite puede crear automáticamente el archivo de la base de datos si no existe.
import sqlite3
connection = sqlite3.connect(':memory:')
print(type(connection).__name__)
Connection
Crear una tabla e insertar filas
import sqlite3
connection = sqlite3.connect(':memory:')
cursor = connection.cursor()
cursor.execute('CREATE TABLE users (name TEXT, age INTEGER)')
cursor.execute('INSERT INTO users VALUES (?, ?)', ('Ada', 36))
cursor.execute('INSERT INTO users VALUES (?, ?)', ('Grace', 40))
connection.commit()
Usa marcadores de posición en lugar de formatear cadenas SQL manualmente.
WARNING
No construyas consultas SQL concatenando la entrada del usuario. Usa marcadores de posición como ? para evitar errores de inyección SQL.
Consultar filas
rows = cursor.execute('SELECT name, age FROM users ORDER BY age').fetchall()
print(rows)
[('Ada', 36), ('Grace', 40)]
Usar objetos Row
Row te permite acceder a las columnas por nombre.
connection = sqlite3.connect(':memory:')
connection.row_factory = sqlite3.Row
cursor = connection.cursor()
cursor.execute('CREATE TABLE projects (name TEXT)')
cursor.execute('INSERT INTO projects VALUES (?)', ('python-cheatsheet',))
row = cursor.execute('SELECT name FROM projects').fetchone()
print(row['name'])
python-cheatsheet
Usar un gestor de contexto
La conexión puede usarse con with para que los cambios se confirmen automáticamente si no hay errores.
import sqlite3
with sqlite3.connect(':memory:') as connection:
connection.execute('CREATE TABLE notes (body TEXT)')
connection.execute('INSERT INTO notes VALUES (?)', ('Learn sqlite3',))
rows = connection.execute('SELECT body FROM notes').fetchall()
print(rows)
[('Learn sqlite3',)]