view backend/sqlalchemy/Database.py @ 150:babe14449162

the entries for the selected feeds had to be set onto the item delegate so had access to the selected feed entry. Keep the list in one place only (the model) and access it from the item delegate.
author Dirk Olmes <dirk@xanthippe.ping.de>
date Sat, 27 Aug 2011 06:43:28 +0200
parents 5b131f82057d
children bb3c851b18b1
line wrap: on
line source


from sqlalchemy.engine import create_engine
from sqlalchemy.orm import sessionmaker
import Mapping
import argparse
import util

# Keep the connection to the database only once. The feed updater and the GUI app will
# operate on a single engine/session but this comes in handy for interactive use
engine = None
SessionMaker = None

def createSession(databaseUrl=None):
    if databaseUrl is None:
        databaseUrl = _getDatabaseUrl()
    initEngine(databaseUrl)
    Mapping.createMapping(engine)
    initSessionMaker()
    return SessionMaker()

def _getDatabaseUrl():
    parser = argparse.ArgumentParser()
    parser.add_argument("--dburl", nargs="?", required=True, help="Database URL for the sqlalchemy backend")
    args = parser.parse_known_args()
    return args[0].dburl

def initEngine(databaseUrl):
    global engine
    if engine is None:
        verbose = util.databaseLoggingEnabled()
        engine = create_engine(databaseUrl, echo=verbose)

def initSessionMaker():
    global SessionMaker
    if SessionMaker is None:
        SessionMaker = sessionmaker(bind=engine)