from sqlalchemy import create_engine from sqlalchemy import Column, Integer, String from sqlalchemy.orm import declarative_base, scoped_session, sessionmaker Base = declarative_base() class Author(Base): __tablename__ = "authors" id = Column(Integer, primary_key=True) name = Column(String) if __name__ == "__main__": dbname = "sqlite:///session.db" # dbname = "sqlite:///:memory:" engine = create_engine(dbname) # , echo=True) Base.metadata.drop_all(engine) Base.metadata.create_all(engine) # The sessionmaker factory generates new Session objects when called, # creating them given the configurational arguments established here. # La classe sessionmaker() retourne une **instance** de sessionmaker # cf sessionmaker.__class__ dans sqlalchemy/orm/session.py session_factory = sessionmaker(bind=engine) # Provides scoped management of Session objects. # https://docs.sqlalchemy.org/en/13/orm/contextual.html#thread-local-scope # La classe scoped_session() crée une **instance** de scoped_session # qui utilise une **instance** de sessionmaker pour créer une # instance de la classe Session() scoped_session_factory = scoped_session(session_factory) session = scoped_session_factory() author = Author(name="René Barjavel") session.add(author) session.commit() session.close()