Модуль SQLite3 Python
Модуль sqlite3 позволяет использовать базы данных SQLite прямо из Python без отдельного сервера баз данных.
import sqlite3
SQLite — хороший выбор для небольших приложений, локальных инструментов, тестов и изучения SQL. База данных может храниться в одном файле или только в памяти с ':memory:'.
Подключение к базе данных
SQLite может автоматически создать файл базы данных, если его нет.
import sqlite3
connection = sqlite3.connect(':memory:')
print(type(connection).__name__)
Connection
Создание таблицы и вставка строк
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()
Используйте placeholders вместо ручного форматирования SQL-строк.
WARNING
Не собирайте SQL-запросы, склеивая ввод пользователя. Используйте placeholders вроде ?, чтобы избежать SQL injection.
Запрос строк
rows = cursor.execute('SELECT name, age FROM users ORDER BY age').fetchall()
print(rows)
[('Ada', 36), ('Grace', 40)]
Использование объектов Row
Row позволяет обращаться к столбцам по имени.
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
Использование контекстного менеджера
Соединение можно использовать с with, чтобы изменения автоматически фиксировались при отсутствии ошибок.
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',)]