you'd need to hand-roll the deferred reflection part, there's an example in 0.7 
called "declarative_reflection" but it might require features that aren't in 
0.6.

I'd not be looking to add any kind of slick/magic systems to an 0.6 app, 0.6 is 
very early in the curve for declarative techniques.  upgrade it first, 
otherwise stick with the hacky approaches you have.



On Aug 26, 2013, at 5:38 PM, Praveen <praveen.venk...@gmail.com> wrote:

> Does this work in sqlalchemy 0.6.1 ?
> 
> 
> On Mon, Aug 26, 2013 at 5:36 PM, Michael Bayer <mike...@zzzcomputing.com> 
> wrote:
> OK here we are, had to switch approaches due to a bug with the column reflect 
> event, to use the aforementioned __mapper_cls__ (had the name wrong), so I 
> think you'll see this is a pretty open-ended way to control how something 
> maps as you're given total access to mapper() here:
> 
> from sqlalchemy import *
> from sqlalchemy.orm import *
> from sqlalchemy.ext.declarative import declarative_base, declared_attr
> from sqlalchemy.ext.declarative import DeferredReflection
> from sqlalchemy import event
> 
> Base = declarative_base()
> 
> e = create_engine("sqlite://", echo=True)
> e.execute("""
>     create table sample (
>         Id integer primary key,
>         Name varchar,
>         Description varchar,
>         IsActive varchar
>     )
> """)
> 
> class MagicMappyThing(DeferredReflection):
>     @declared_attr
>     def __mapper_cls__(cls):
>         def map_(cls, *arg, **kw):
>             props = kw.setdefault("properties", {})
>             for k, v in cls.__map__.items():
>                 props[v] = cls.__table__.c[k]
>             return mapper(cls, *arg, **kw)
>         return map_
> 
> class Sample(MagicMappyThing, Base):
>     __tablename__ = 'sample'
>     __map__ = {'Id': 'id', 'Name': 'name', 'Description': 'description', 
> 'IsActive': 'is_active'}
> 
>     def __init__(self, id, name, description, is_active):
>         self.id = id
>         self.name = name
>         self.description = description
>         self.is_active = is_active
> 
> MagicMappyThing.prepare(e)
> 
> s = Session(e)
> 
> s.add(Sample(id=1, name='some name', description='foo', is_active='foo'))
> s.commit()
> 
> 
> 
> 
> On Aug 26, 2013, at 5:17 PM, Michael Bayer <mike...@zzzcomputing.com> wrote:
> 
>> 
>> On Aug 26, 2013, at 5:16 PM, Michael Bayer <mike...@zzzcomputing.com> wrote:
>> 
>>> 
>>> On Aug 26, 2013, at 4:35 PM, Praveen <praveen.venk...@gmail.com> wrote:
>>> 
>>>> The problem with using Mixins is that you need to know the definition of 
>>>> columns already for creating the mixin class. What I am trying to do is 
>>>> more like get the definition dynamically on the fly.Take a look at this:
>>> 
>>> here's a simple way to add reflection events which intercept the Column and 
>>> add the .key of your choice, and saves on code by making use of the 
>>> existing DeferredReflection mixin instead of hand-coding it.
>> 
>> except it doesnt work yet, give me 10 minutes.
>> 
> 
> 
> 
> 
> -- 
> Have a nice day !!!
> 
> -- 
> 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/groups/opt_out.

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to