Configure SQLAlchemy for projects without flask

I discourage you to use an ORM to manage the interactions with the database. Check the alternative solutions.

  • Install Alembic:

    pip install alembic

  • It's important that the migration scripts are saved with the rest of the source code. Following Miguel Gringberg suggestion, we'll store them in the {{ program_name }}/migrations directory.

    Execute the following command to initialize the alembic repository.

    alembic init {{ program_name }}/migrations
  • Create the basic file under the project code.

    Module to store the models.
        Class_name: Class description.
    import os
    from sqlalchemy import \
        create_engine, \
        Column, \
    from sqlalchemy.ext.declarative import declarative_base
    db_path = os.path.expanduser('{{ path_to_sqlite_file }}')
    engine = create_engine(
        os.environ.get('{{ program_name }}_DATABASE_URL') or 'sqlite:///' + db_path
    Base = declarative_base(bind=engine)
    class User(Base):
        Class to define the User model.
        __tablename__ = 'user'
        id = Column(Integer, primary_key=True, doc='User ID')

  • Create the migrations/ file as specified in the alembic article.
  • Create the first alembic revision.
    alembic \
        -c {{ program_name }}/migrations/alembic.ini \
        revision \
        --autogenerate \
        -m "Initial schema"
  • Set up the testing environment for SQLAlchemy