On Jul 24, 2011, at 8:39 AM, Fayaz Yusuf Khan wrote:
>
> The problem with using different mixins is that you lose out on a lot of code
> reusability. In my case, I have a 'user' column that appears in almost all
> table declarations. To have a separate mixin class for each joint-table
> inheritance would destroy the purpose of having a mixin altogether.
In your example you can simply use CMixin and TMixin separately instead of
inheriting them from one another, then apply CMixin and TMixin directly to C
individually. That makes more sense here since for every class X which you
want to have "user", you'd apply CMixin explicitly. The more I look at this
the more it seems completely correct to me. Mixins and declarative do a lot ,
and sticking to Python's regular rules for inheritance is what makes them great.
>
> Perhaps, there should be a shorthand for implicitly creating columns along
> with foreign key constraints?
>
> So something like
> ImplicitForeignKeyConstraint(
> ['user', 'timestamp'],
> ['Timeline.user', 'Timeline.timestamp'], primary_key=True)
> should lead to the creation of
> Column('user', String, primary_key=True),
> Column('timestamp',Integer, autoincrement=False, primary_key=True),
> ForeignKeyConstraint(
> ['user', 'timestamp'],
> ['Timeline.user', 'Timeline.timestamp'])
Not something for core but certainly something you could provide yourself (use
append_column()). SQLA's APIs try to remain explicit about things leaving
"implicit helper" layers as an external task (hence relationship + ForeignKey,
as opposed to the "all in one" demo I did at
http://techspot.zzzeek.org/2011/05/17/magic-a-new-orm/ , etc)
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.