День 31. Базы данных и SQL: хранение и извлечение данных

Добро пожаловать в 31-й день нашего 90-дневного путешествия по изучению ядра Python! Вчера мы отметили завершение 30-дневного обучения, изучая многопоточность и многопроцессорность для одновременного выполнения. Сегодня мы углубимся в базы данных и SQL, необходимые навыки для работы с хранением и поиском данных. Давайте начнем!

Введение в базы данных и SQL

Базы данных — это структурированный способ хранения, управления и извлечения данных. SQL (язык структурированных запросов) — это предметно-ориентированный язык, используемый для взаимодействия с базами данных. Python предоставляет различные библиотеки для работы с базами данных, такие как SQLite и SQLAlchemy.

Использование SQLite в Python

SQLite — это легкий бессерверный движок базы данных. Взаимодействовать с SQLite можно с помощью встроенного модуля sqlite3:

import sqlite3

# Connect to the database (create if not exists)
conn = sqlite3.connect('my_database.db')
# Create a cursor
cursor = conn.cursor()
# Create a table
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        username TEXT,
        email TEXT
    )
''')
# Insert data
cursor.execute('''
    INSERT INTO users (username, email)
    VALUES (?, ?)
''', ('alice', '[email protected]'))
# Commit changes and close the connection
conn.commit()
conn.close()

Получение данных из базы данных

Чтобы получить данные из базы данных, используйте оператор SELECT:

conn = sqlite3.connect('my_database.db')
cursor = conn.cursor()

cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
    print(row)
conn.close()

Использование SQLAlchemy

SQLAlchemy — это мощная библиотека ORM (объектно-реляционного сопоставления), которая обеспечивает интерфейс более высокого уровня для баз данных. Он абстрагирует операции с базой данных, делая взаимодействие с базой данных более Pythonic:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String)
    email = Column(String)
engine = create_engine('sqlite:///my_database.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
new_user = User(username='bob', email='[email protected]')
session.add(new_user)
session.commit()
users = session.query(User).all()
for user in users:
    print(user.username, user.email)
session.close()

Заключение

Поздравляем с завершением 31-го дня нашего путешествия по изучению Python! Сегодня мы изучили базы данных и SQL, необходимые навыки хранения и поиска данных. Мы научились взаимодействовать с базами данных с помощью SQLite и SQLAlchemy.

Уделите некоторое время практике создания, вставки и извлечения данных из баз данных в ваших проектах Python. Завтра, в день 32, мы углубимся в веб-разработку с помощью Flask, популярного веб-фреймворка.

Продолжайте в том же духе, и давайте продолжим путь обучения! 🚀

Примечание. Эта запись в блоге является частью 90-дневной серии обучения основам программирования на Python с нуля. Все предыдущие дни вы можете найти в индексе серии здесь.