Лекція 10. Робота з БД
СУБД SQLite. Підключення до бази даних. Отримання та запис даних в
таблиці БД. Особливості роботи з віддаленою БД.
2. MySQL
На відміну від SQLite, у Python немає вбудованого модуля для підключення до баз MySQL. Щоб підключитися до бази MySQL із Python, потрібно встановити відповідний SQL-драйвер. Один з таких - "mysql-connector-python".
Завантажити цей модуль SQL можна за допомогою менеджера пакетів «pip»:
pip install mysql-connector-python
Врахуйте, що MySQL – серверна СУБД. Тому одному сервері може бути багато баз. На відміну від SQLite, де підключення до бази рівносильно її створенню, MySQL для створення бази потрібні два кроки:
- Підключення до сервера MySQL.
- Виконання запиту на створення бази даних SQL.
import mysql.connector
conn = mysql.connector.connect(
host="localhost",
user="root",
password="your_password",
database="testdb"
)
cursor = conn.cursor()
Основні елементи:
- Connection - Це об'єкт, що представляє активне з'єднання з MySQL-сервером.
- Cursor - Об’єкт для виконання SQL-запитів через з’єднання.
- Cxecute - Запити передаються параметризовано — не через f-рядки, щоб уникнути SQL-ін'єкцій.
- Сommit - MySQL за замовчуванням працює у транзакційному режимі, тому після INSERT/UPDATE/DELETE треба викликати
.commit()
: - rollback() - Використовується для відкату змін у разі помилки
- close() - Завжди потрібно закривати після завершення роботи, щоб уникнути витоку ресурсів.
Виконання SQL коду
# Створення таблиць
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT
)
""")
# Додавання елементів
cursor.execute("INSERT INTO users (name, age) VALUES (%s, %s)", ("Олена", 32))
conn.commit()
# Отримання даних
cursor.execute("SELECT * FROM users")
for row in cursor.fetchall():
print(row)
# Видалення даних
cursor.execute("DELETE FROM users WHERE name = %s", ("Олена",))
conn.commit()
# Закриття підключення до БД
cursor.close()
conn.close()
# Оновлення даних
cursor.execute("UPDATE users SET age = %s WHERE name = %s", (33, "Олена"))
conn.commit()
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання