# A SQLAlchemy 1.3/1.4 module, used to check the guard. Each line is removed, legacy or silently different in 2.x. from sqlalchemy import Column, Integer, MetaData, String, create_engine, select from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship, sessionmaker engine = create_engine("sqlite:///app.db", future=True) meta = MetaData(bind=engine) Base = declarative_base() class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) name = Column(String) posts = relationship("Post", backref="author", lazy="dynamic") Session = sessionmaker(bind=engine, autocommit=True) session = Session() admins = session.query(User).filter_by(name="admin").all() one = session.query(User).get(1) rows = engine.execute("select id, name from users") for row in rows: print(row["name"]) ids = select([User.id]) with engine.connect() as conn: conn.execute(text("update users set name = 'x'"))