8.31. SQLAlchemy Query Fetch

8.31.1. SetUp

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


DATABASE = 'sqlite:///:memory:'

engine = create_engine(DATABASE, future=True)
Model = declarative_base()


class User(Model):
    __tablename__ = 'users'
    uid = Column(Integer, autoincrement=True, primary_key=True)
    firstname = Column(String, nullable=False)
    lastname = Column(String, nullable=False)

    def __init__(self, firstname, lastname):
        self.firstname = firstname
        self.lastname = lastname


Model.metadata.create_all(engine)

with sessionmaker(engine).begin() as session:
    session.add_all([
        User('Mark', 'Watney'),
        User('Melissa', 'Lewis'),
        User('Rick', 'Martinez'),
        User('Alex', 'Vogel'),
        User('Beth', 'Johanssen'),
        User('Chris', 'Beck'),
    ])

8.31.2. Scalar

8.31.3. Value

8.31.4. Values

8.31.5. Get

8.31.6. One

8.31.7. One or None

8.31.8. All

query = text('SELECT * FROM users')

with engine.begin() as db:
    for row in db.execute(query).all():
        print(row)
(1, 'Mark', 'Watney')
(2, 'Melissa', 'Lewis')
(3, 'Rick', 'Martinez')
(4, 'Alex', 'Vogel')
(5, 'Beth', 'Johanssen')
(6, 'Chris', 'Beck')