Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SQLAlchemy

Conexão

from sqlalchemy import create_engine, text

engine = create_engine('sqlite+pysqlite:///:memory:', echo=True, echo_pool='debug')

with engine.connect() as conn:
    result = conn.execute(text('SELECT 1'))
    print(result.all())
    conn.commit()

Conexão com configuração dinâmica:

from sqlalchemy import Dialect, Pool, event

# args
@event.listens_for(engine, 'do_connect')
def receive_do_connect(dialect: Dialect, conn_rec: Pool, cargs: list, cparams: dict) -> None:
    cargs[0] = 'db.sqlite3'

# kwargs
@event.listens_for(engine, 'do_connect')
def receive_do_connect(dialect: Dialect, conn_rec: Pool, cargs: list, cparams: dict) -> None:
    cargs.clear()
    cparams['database'] = 'db.sqlite3'

# Conexão manual
@event.listens_for(engine, 'do_connect')
def receive_do_connect(dialect: Dialect, conn_rec: Pool, cargs: list, cparams: dict) -> None:
    return dialect.connect('db.sqlite3')

ORM

# Manual
from sqlalchemy.orm import Session

with Session(engine) as session:
    result = session.execute(text('SELECT 1'))
    print(result.all())
    session.commit()

# Factory
from sqlalchemy.orm import sessionmaker

Session = sessionmaker(engine)

with Session() as session:
    result = session.execute(text('SELECT 1'))
    print(result.all())
    session.commit()