SQLAlchemy
sqlalchemy
This page is a work in progress.
Reference: SQLAlchemy documentation
Database Abstraction Layer
import logging
from sqlalchemy import create_engine
logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
engine = create_engine('sqlite:///basics.sqlite')
Object Relational Mapper
Declarative model, engine and a query (SQLAlchemy 2.0 style):
from sqlalchemy import create_engine, select, String
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session
class Base(DeclarativeBase):
pass
class Knight(Base):
__tablename__ = "knights"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(String(50))
quest: Mapped[str | None]
engine = create_engine("sqlite://")
Base.metadata.create_all(engine)
with Session(engine) as session:
session.add(Knight(name="Arthur", quest="grail"))
session.commit()
with Session(engine) as session:
knight = session.scalars(
select(Knight).where(Knight.quest == "grail")
).one()