SQLAlchemy and threads - Hero-Development/snippets GitHub Wiki

Welcome to the snippets wiki!

from Queue import Queue
from threading import Thread


class SAConnection( object ):
    classes = {}

    def __init__( self, db_url, db ):
        self.db = db
        self.engine = sqlalchemy.create_engine( db_url +'/'+ db, pool_recycle = 14400 )

        self.dbase = declarative_base()
        self.dbase.metadata.bind = self.engine
        self.dbase.metadata.reflect()

        self.sm = sqlalchemy.orm.sessionmaker( bind=self.engine, autocommit=False )
        self.session = self.sm()


    def table( self, name ):
        ns = self.db +'.'+ name
        if not ns in SAConnection.classes:
            statics = {
                '__table__': Table( name, self.dbase.metadata, autoload=True )
            }
            cls = type( ns, ( self.dbase, ), statics )
            SAConnection.classes[ ns ] = cls

        return SAConnection.classes[ ns ]