def _class_for_table(session, engine, selectable, base_cls=object, **mapper_kwargs): selectable = expression._clause_element_as_expr(selectable) mapname = 'Mapped' + _selectable_name(selectable) # Py2K if isinstance(mapname, unicode): engine_encoding = engine.dialect.encoding mapname = mapname.encode(engine_encoding) # end Py2K if isinstance(selectable, Table): klass = TableClassType(mapname, (base_cls, ), {}) else: klass = SelectableClassType(mapname, (base_cls, ), {}) def _compare(self, o): L = list(self.__class__.c.keys()) L.sort() t1 = [getattr(self, k) for k in L] try: t2 = [getattr(o, k) for k in L] except AttributeError: raise TypeError('unable to compare with %s' % o.__class__) return t1, t2 # python2/python3 compatible system of # __cmp__ - __lt__ + __eq__ def __lt__(self, o): t1, t2 = _compare(self, o) return t1 < t2 def __eq__(self, o): t1, t2 = _compare(self, o) return t1 == t2 def __repr__(self): L = [ "%s=%r" % (key, getattr(self, key, '')) for key in self.__class__.c.keys() ] return '%s(%s)' % (self.__class__.__name__, ','.join(L)) for m in ['__eq__', '__repr__', '__lt__']: setattr(klass, m, eval(m)) klass._table = selectable klass.c = expression.ColumnCollection() mappr = mapper(klass, selectable, extension=AutoAdd(session), **mapper_kwargs) for k in mappr.iterate_properties: klass.c[k.key] = k.columns[0] klass._query = session.query_property() return klass
def _class_for_table(session, engine, selectable, base_cls, mapper_kwargs): selectable = expression._clause_element_as_expr(selectable) mapname = _selectable_name(selectable) # Py2K if isinstance(mapname, unicode): engine_encoding = engine.dialect.encoding mapname = mapname.encode(engine_encoding) # end Py2K if isinstance(selectable, Table): klass = TableClassType(mapname, (base_cls,), {}) else: klass = SelectableClassType(mapname, (base_cls,), {}) def _compare(self, o): L = list(self.__class__.c.keys()) L.sort() t1 = [getattr(self, k) for k in L] try: t2 = [getattr(o, k) for k in L] except AttributeError: raise TypeError('unable to compare with %s' % o.__class__) return t1, t2 # python2/python3 compatible system of # __cmp__ - __lt__ + __eq__ def __lt__(self, o): t1, t2 = _compare(self, o) return t1 < t2 def __eq__(self, o): t1, t2 = _compare(self, o) return t1 == t2 def __repr__(self): L = ["%s=%r" % (key, getattr(self, key, '')) for key in self.__class__.c.keys()] return '%s(%s)' % (self.__class__.__name__, ','.join(L)) def __getitem__(self, key): return self._query[key] for m in ['__eq__', '__repr__', '__lt__', '__getitem__']: setattr(klass, m, eval(m)) klass._table = selectable klass.c = expression.ColumnCollection() mappr = mapper(klass, selectable, extension=AutoAdd(session), **mapper_kwargs) for k in mappr.iterate_properties: klass.c[k.key] = k.columns[0] klass._query = session.query_property() return klass
from sqlalchemy.orm import sessionmaker, scoped_session, relationship, backref, session from sqlalchemy.orm import relationship, backref, relation from sqlalchemy.dialects import postgresql from sqlalchemy import select, func, types, sql, update import datetime import os import psycopg2 from wtforms import Form, BooleanField, TextField, PasswordField, validators database_url = os.environ['DATABASE_URL'] engine = create_engine(database_url, echo=False) session = scoped_session( sessionmaker(bind=engine, autocommit=False, autoflush=False)) Base = declarative_base() Base.query = session.query_property() ### Class declarations class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) user_name = Column(String(64), nullable=True) email = Column(String(64), nullable=True) password = Column(String(64), nullable=True) photos = relationship("Photo", backref="users", lazy="joined") # users are the parents of the photo children class Photo(Base):
from sqlalchemy.orm import relationship, backref, relation from sqlalchemy.dialects import postgresql from sqlalchemy import select, func, types, sql, update import datetime import os import psycopg2 from wtforms import Form, BooleanField, TextField, PasswordField, validators database_url = os.environ['DATABASE_URL'] engine = create_engine(database_url, echo=False) session = scoped_session(sessionmaker(bind=engine, autocommit = False, autoflush = False)) Base = declarative_base() Base.query = session.query_property() ### Class declarations class User(Base): __tablename__ = "users" id = Column(Integer, primary_key = True) user_name = Column(String(64), nullable=True) email = Column(String(64), nullable=True) password = Column(String(64), nullable=True) photos = relationship("Photo", backref="users", lazy="joined") # users are the parents of the photo children class Photo(Base): __tablename__ = "photos"