Módulo SQLite3 do Python
O módulo sqlite3 permite usar bancos de dados SQLite diretamente do Python, sem um servidor de banco de dados separado.
import sqlite3
SQLite é uma boa escolha para apps pequenos, ferramentas locais, testes e aprendizado de SQL. O banco pode ficar em um único arquivo ou apenas na memória com ':memory:'.
Conectando a um banco de dados
SQLite pode criar o arquivo do banco automaticamente se ele não existir.
import sqlite3
connection = sqlite3.connect(':memory:')
print(type(connection).__name__)
Connection
Criando uma tabela e inserindo linhas
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()
Use placeholders em vez de montar strings SQL manualmente.
WARNING
Não construa consultas SQL concatenando entrada do usuário. Use placeholders como ? para evitar problemas de SQL injection.
Consultando linhas
rows = cursor.execute('SELECT name, age FROM users ORDER BY age').fetchall()
print(rows)
[('Ada', 36), ('Grace', 40)]
Usando objetos Row
Row permite acessar colunas pelo nome.
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
Usando um gerenciador de contexto
A conexão pode ser usada com with, então as mudanças são confirmadas automaticamente se não houver erro.
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',)]