Какие знаешь способы работы с БД в SQLAlchemy

Python Middle Arendadata
Какие знаешь способы работы с БД в SQLAlchemy
Ответы
SQLAlchemy предоставляет два основных подхода для работы с БД: **Core** (низкоуровневый) и **ORM** (высокоуровневый). ### **1. SQLAlchemy Core** Работает напрямую с SQL, но абстрагирует синтаксис под разные СУБД. ``` from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData engine = create_engine('sqlite:///example.db') metadata = MetaData() users = Table( 'users', metadata, Column('id', Integer, primary_key=True), Column('name', String), ) metadata.create_all(engine) # Вставка данных with engine.connect() as conn: conn.execute(users.insert(), [{'name': 'Alice'}, {'name': 'Bob'}]) ``` ### **2. SQLAlchemy ORM** Объектно-реляционное отображение (ORM) позволяет работать с БД через Python-классы. ``` from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) engine = create_engine('sqlite:///example.db') Base.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session() # Добавление записи user = User(name='Alice') session.add(user) session.commit() ``` **Дополнительно:** - **Асинхронная работа** через `asyncpg` + `SQLAlchemy 2.0` (async/await). - **Alembic** для миграций. - **Hybrid подход** – комбинация ORM и Core для сложных запросов.