Лекція 10. Робота з БД
1. СУБД SQLite. Підключення до бази даних. Отримання та запис даних в таблиці БД. Особливості роботи з віддаленою БД.
Приклад логічної структури БД.
SQLite
SQLite це найпростіша база даних SQL для Python, оскільки не вимагає встановлення зовнішніх SQL модулів. За промовчанням у встановленій системі Python вже є SQL бібліотека sqlite3, яка дозволяє підключатися до бази SQLite.
Більш того, бази SQLite не потребують сервера і самодостатні, оскільки просто зчитують та записують дані у файл. На відміну від MySQL та PostgreSQL, для виконання операцій з базами даних навіть не потрібно встановлювати та запускати серверну програму.
Приклад:
import sqlite3
from sqlite3 import Error
def create_connection(path):
connection = None
try:
connection = sqlite3.connect(path)
print(«Підключення до бази даних SQLite пройшло успішно")
except Error as e:
print(f«Виникла помилка '{e}’»)
return connection
- Метод "sqlite3.connect(path)" повертає об'єкт "(connection)". Його ж, своєю чергою, повертає і функція «create_connection()».
- Об'єкт connection можна використовувати для виконання запитів до бази SQLite. Наступний скрипт встановлює підключення до SQLite:
connection = create_connection(«my_bd.sqlite")
Коли ви запустите скрипт бази даних SQL, побачите, що у кореневому каталозі створено файл бази даних «my_bd.sqlite». Шлях до файлу можна змінити.
Запис даних у БД.
Для роботою з БД створюється курсор, за допомогою якого можна виконувати SQL код.
cursor = connection.cursor()
Створення таблиці (одноразово)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER
)
''')
connection.commit()
Додавання даних (INSERT)
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Марія", 30))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Ігор", 25))
connection.commit()
Використання ? — це захищає від SQL-ін’єкцій (параметризований запит).
Отримання даних (SELECT)
- Всі записи:
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row) # (1, 'Марія', 30), (2, 'Ігор', 25)
- Один запис:
cursor.execute("SELECT * FROM users WHERE name = ?", ("Марія",))
user = cursor.fetchone()
print(user) # (1, 'Марія', 30)
Закриття з'єднання
cursor.close()
conn.close()
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання