Skip to content

Instantly share code, notes, and snippets.

@Tefnet
Created December 27, 2012 17:24
Show Gist options
  • Save Tefnet/4390089 to your computer and use it in GitHub Desktop.
Save Tefnet/4390089 to your computer and use it in GitHub Desktop.
SQLAlchemy DeclarativeMeta example
import sqlalchemy
import sqlalchemy.orm
import sqlalchemy.ext.declarative
class BaseClsMeta(sqlalchemy.ext.declarative.DeclarativeMeta):
def __init__(cls, classname, bases, dict_):
if getattr(cls, '__dupa__', False):
for i in range(10):
fname = 'fid%d' % i
dict_[fname] = sqlalchemy.Column(fname, sqlalchemy.types.Integer())
setattr(cls, fname, dict_[fname])
super(BaseClsMeta, cls).__init__(classname, bases, dict_)
Base = sqlalchemy.ext.declarative.declarative_base(metaclass=BaseClsMeta, mapper=sqlalchemy.orm.mapper)
class Foo(Base):
__tablename__ = 'foo'
__dupa__ = True
id = sqlalchemy.Column('id', sqlalchemy.types.Integer(), primary_key=True)
class Bar(Base):
__tablename__ = 'bar'
__dupa__ = False
id = sqlalchemy.Column('id', sqlalchemy.types.Integer(), primary_key=True)
session = sqlalchemy.orm.scoped_session(sqlalchemy.orm.sessionmaker())
engine = sqlalchemy.create_engine('sqlite:///:memory:', echo = True)
Base.metadata.create_all(engine)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment