Thanks again Michael.

A note in the 
http://docs.sqlalchemy.org/en/rel_0_8/orm/extensions/declarative.html#using-the-concrete-helpers
 
section would be great!

On Wednesday, February 27, 2013 6:25:24 PM UTC-6, Michael Bayer wrote:
>
> AbstractConcreteAbstraction doesn't know that it's "mapped" until other 
> mappers configure themselves.  In the absence of such an event,
> call sqlalchemy.orm.configure_mappers() when all subclasses of 
> AbstractConcreteAbstraction have been declared to force this process to 
> occur.
>
>
>
>
> On Feb 27, 2013, at 6:57 PM, Derek Litz <[email protected] <javascript:>> 
> wrote:
>
> Python 2.7.3 (default, Jan  4 2013, 14:06:23)
> [GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on 
> darwin
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import sqlalchemy
> >>> print sqlalchemy.__version__
> 0.8.0b2
>
> Below is the code I was able to use to reproduce a problem I was having.  
> Here is the stack trace:
>
> Traceback (most recent call last):
>   File "test.py", line 48, in <module>
>     print session.query(AbstractConcreteAbstraction).all()
>   File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", 
> line 1079, in query
>     return self._query_cls(entities, self, **kwargs)
>   File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", 
> line 115, in __init__
>     self._set_entities(entities)
>   File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", 
> line 122, in _set_entities
>     entity_wrapper(self, ent)
>   File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", 
> line 2949, in __init__
>     "expected - got '%r'" % (column, )
> sqlalchemy.exc.InvalidRequestError: SQL expression, column, or mapped 
> entity expected - got '<class '__main__.AbstractConcreteAbstraction'>'
>
> The workaround I discovered while trying to reproduce is to simply 
> instantiate a subclass... am I missing something?
>
> from sqlalchemy.engine import Engine
> from sqlalchemy import event
> from sqlalchemy import (Column, Integer, Unicode, DateTime, ForeignKey,
>     Boolean, Numeric, Time)
>
>
> # Taken from http://docs.sqlalchemy.org/ru/latest/dialects/sqlite.html
> @event.listens_for(Engine, "connect")
> def set_sqlite_pragma(dbapi_connection, connection_record):
>     cursor = dbapi_connection.cursor()
>     cursor.execute("PRAGMA foreign_keys=ON")
>     cursor.close()
>
>
> from sqlalchemy import create_engine
> from sqlalchemy.ext.declarative import (declarative_base, declared_attr,
>     AbstractConcreteBase)
> from sqlalchemy.orm import sessionmaker
>
> engine = create_engine('sqlite:///test.db')
> sqlite = declarative_base(bind=engine)
> get_session = sessionmaker(bind=engine)
> session = get_session()
>
> from sqlalchemy.schema import UniqueConstraint
>
>
> class AbstractConcreteAbstraction(AbstractConcreteBase, sqlite):
>     __table_args__ = (UniqueConstraint('derpa',
>         'derp'),)
>     id = Column(Integer, primary_key=True)
>     derpa = Column(Integer)
>     derp = Column(Integer)
>
>
> class ConcreteConcreteAbstraction(AbstractConcreteAbstraction):
>     __tablename__ = u'cca'
>     __mapper_args__ = {'polymorphic_identity': 'ccb',
>         'concrete': True}
>
> print AbstractConcreteAbstraction
>
> sqlite.metadata.create_all()
>
> # DOES NOT WORK WITHOUT!!!
> # ConcreteConcreteAbstraction(derpa=2, derp=2)
>
> print session.query(AbstractConcreteAbstraction).all()
> print session.query(ConcreteConcreteAbstraction).all()
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to