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.

Reply via email to