view Database.py @ 68:525a52169f60

Make FeedEntry table object available in Mapping to use it to expire old, read feed entries.
author Dirk Olmes <dirk@xanthippe.ping.de>
date Tue, 10 Aug 2010 03:32:29 +0200
parents 254d5b89a6ca
children 842727971796
line wrap: on
line source


import Mapping
import sqlalchemy
import sqlalchemy.orm
import sys
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 = _getDatabaseUrl()
    initEngine(databaseUrl)
    Mapping.createMapping(engine)
    initSessionMaker()
    return SessionMaker()

def _getDatabaseUrl():
    if len(sys.argv) < 2:
        print("Usage: %s <database url>" % (sys.argv[0]))
        sys.exit(1)
    return sys.argv[1]

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

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