Модуль 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',)]

Ссылки по теме