This query return orm objects.  If it will return view as you want, in your 
session may have two copies of one object 
*<models.Task object at 0x7f25ac3ffe80>* and *<models.Item object at 
0x7f25ac3ffe80> *and they not equals, but need to be equals
If you need to print values -  You need to create something simular to 
decorator of data, that return copy of required fields
If need to check type - You may use *instance.__class__.__name__* instead 
of *isinstance*


понедельник, 10 декабря 2018 г., 14:18:00 UTC+3 пользователь Mehrdad 
Pedramfar написал:
>
> Hi everybody,
> I have three classes in my model, which one class inherited by the other 
> two:
>
>
>     class Item(Base):
>         __tablename__ = 'item'
>
>         id = Column(Integer, primary_key=True)
>         title = Column(Unicode(300))
>         type = Column(Unicode(50))
>
>         __mapper_args__ = {
>             'polymorphic_on': type
>         }
>
>
>     class Note(Item):
>         __tablename__ = 'note'
>
>         id = Column(Integer, ForeignKey('item.id'), primary_key=True)
>         extra = Column(Text)
>
>         __mapper_args__ = {
>             'polymorphic_identity': 'note'
>         }
>
>
>     class Task(Item):
>         __tablename__ = 'task'
>
>         id = Column(Integer, ForeignKey('item.id'), primary_key=True)
>         another_extra = Column(Text)
>
>         __mapper_args__ = {
>             'polymorphic_identity': 'task'
>         }
> So, when I execute `session.query(Item).all()` I get a list that includes 
> both `Note` and `Task` objects, but I don't want that, I want my objects to 
> be the instance of `Item` class and just have `id`, `title`, `type`, not 
> those extra fields. how should I write the query?
>
> to clarify more, currently, I get:
>
>
>     [
>          <models.Note object at 0x7f25ac3ffe80>,
>          <models.Task object at 0x7f25ac3ffe80>,
>          <models.Task object at 0x7f25ac3ffe80>,
>          ...
>     ]
>
> But I want to get:
>
>     [
>         <models.Item object at 0x000000000000>,
>         <models.Item object at 0x000000000000>,
>         <models.Item object at 0x000000000000>,
>         ...
>     ]
>
> I have asked the same question in StackOverflow, but still nothing. here 
> is the : 
> Get sqlalchemy base class object instead of children 
> <https://stackoverflow.com/questions/53458005/get-sqlalchemy-base-class-object-instead-of-children>
>
> Get sqlalchemy base class object instead of children
>
> I have three classes in my model, which one class inherited by the other 
> two: class Item(Base): __tablename...
>
> <https://stackoverflow.com/questions/53458005/get-sqlalchemy-base-class-object-instead-of-children>
>
>
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to