Skip to content
Snippets Groups Projects
database.py 1.15 KiB
Newer Older
from sqlalchemy import create_engine
from flask_security import SQLAlchemySessionUserDatastore
from os import environ
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base

db_user = environ["DATABASE_USER"]
db_password = environ["DATABASE_PASSWORD"]
db_host = environ["DATABASE_HOST"]
db_name = environ["DATABASE_NAME"]

engine = create_engine('postgresql://{0}:{1}@{2}/{3}'.format(
    db_user, db_password, db_host, db_name))

Mark's avatar
Mark committed
db_session = scoped_session(sessionmaker(autocommit=False,
                                     autoflush=False,
                                     bind=engine))
Mark's avatar
Mark committed
Base = declarative_base()
Mark's avatar
Mark committed
Base.query = db_session.query_property()
def get_user_datastore():
    from database.models import Role, User
    return SQLAlchemySessionUserDatastore(
        db_session,
        User,
        Role)

Mark's avatar
Mark committed
def init_db(engine=engine):
    # import all modules here that might define models so that
    # they will be registered properly on the metadata.  Otherwise
     # you will have to import them first before calling init_db()
Mark's avatar
Mark committed
    import database.models
    Base.metadata.create_all(bind=engine)