""" Common db functions """ import logging from sqlalchemy import MetaData, create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base # Prepare SQLAlchemy objects Meta = MetaData() Base = declarative_base(metadata=Meta) Session = sessionmaker() DbFilename = None def connect(filename=None): """ create engine and bind to Meta object. Arguments: @filename - string with absolute or relative path to sqlite database file. If None, db in-memory will be created """ global DbFilename if not filename: logging.warning('Using in-memory database. Will disappear after ' 'program ends. This is probably not what you expect.') filename = ':memory:' DbFilename = filename connect_string = "sqlite:///%s" % filename engine = create_engine(connect_string) Meta.bind = engine Meta.create_all(checkfirst=True) return engine