Hi,

Can it be done in declarative?
I've tried several ways, but I cannot find a working one :/
Basically, I think I need to redefine some self-referential relationships,
as they link against the polymorphic class.


Meta = declarative_meta()

class NonPolymorphicClass(MyBaseClass):
    __mapper_args__ = {
        'non_primary' : True
    }

==> ArgumentError: Inheritance of non-primary mapper for class '
NonPolymorphicClass' is only allowed from a non-primary mapper




class NonPolymorphicClass(MyBaseClass):
    __table__ = MyBaseClass.__table__
    __mapper_args__ = {
        'non_primary' : True
    }

==> ArgumentError: Inheritance of non-primary mapper for class '
NonPolymorphicClass' is only allowed from a non-primary mapper




class NonPolymorphicClass(Meta):
    __mapper_args__ = {
        'non_primary' : True
    }

==> InvalidRequestError: Class <class '__main__.NonPolymorphicClass'> does
not have a __table__ or __tablename__ specified and does not inherit from
an existing table-mapped class.




class NonPolymorphicClass(Meta):
    __mapper_args__ = {
        'non_primary' : True
    }

==> InvalidRequestError: Class <class '__main__.NonPolymorphicClass'> has
no primary mapper configured. Configure a primary mapper first before
setting up a non primary Mapper.


2014-03-17 13:09 GMT+01:00 Pau Tallada <tall...@pic.es>:

> Great!
>
> I think it works for my needs :D
>
> Thank you very much!
>
> Pau.
>
>
> 2014-03-17 12:28 GMT+01:00 Michael Bayer <mike...@zzzcomputing.com>:
>
>
>> On Mar 17, 2014, at 6:48 AM, Pau Tallada <tall...@pic.es> wrote:
>>
>> Hi everyone :)
>>
>> I have an application with some kind of dynamic model.
>> Several plugins define subclasses of a common base class and override
>> their behaviour, but they do not change any column.
>>
>> In some scenarios, not all the puglins are loaded, so not all the
>> subclasses are present/defined in the Metadata, but I still need to query
>> those instances and access their columns.
>>
>> Is there any option/feature/trick to temporarily disable polymorphism in
>> a single query (or globally for a session or engine) and load all classes
>> as instances of the base class?
>>
>>
>>
>> you can use a non primary mapper:
>>
>> m = mapper(MyBase, my_base_table, non_primary=True)
>>
>> s.query(m).all()
>>
>>
>>
>>
>> The other option is to hack some kind of on-demand polymorphism myself
>> into the __new__ method of the Base class.
>>
>> Thanks!
>>
>> Pau.
>>
>> --
>> ----------------------------------
>> Pau Tallada Crespí
>> Dep. d'Astrofísica i Cosmologia
>> Port d'Informació Científica (PIC)
>> Tel: +34 93 586 8233
>> ----------------------------------
>>
>>
>> --
>> 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 http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>  --
>> 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 http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> ----------------------------------
> Pau Tallada Crespí
> Dep. d'Astrofísica i Cosmologia
> Port d'Informació Científica (PIC)
> Tel: +34 93 586 8233
> ----------------------------------
>
>


-- 
----------------------------------
Pau Tallada Crespí
Dep. d'Astrofísica i Cosmologia
Port d'Informació Científica (PIC)
Tel: +34 93 586 8233
----------------------------------

-- 
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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to