On Jan 25, 2010, at 9:13 PM, Todd Blanchard wrote: > Ugh. Then I just don't get the point - the only reason to use inheritance is > to avoid defining all the fields twice (and I have a bunch of methods - but > still). > > I might as well stick with the class decorators approach (which is working > really well for me).
the point is, if you intend to represent a class hierarchy among distinct tables. But no, its not meant as a typing saver. The approach at http://www.sqlalchemy.org/trac/wiki/UsageRecipes/DeclarativeMixins is recommended for that since many people have requested it. > > On Jan 25, 2010, at 1:10 PM, Michael Bayer wrote: > >> Todd Blanchard wrote: >>> I upgraded from 0.5.6 to 0.5.8 but it is still the same. >>> >>> The fields from MakerGraphic do not appear in the event_types table.:-/ >> >> This is a common misunderstanding when using concrete. You need to >> define each column specifically for each concrete table since each class >> represents an entirely different table. See the example at >> http://www.sqlalchemy.org/docs/reference/ext/declarative.html#concrete-table-inheritance >> . >> >>> >>> On Jan 25, 2010, at 9:43 AM, Michael Bayer wrote: >>> >>>> Todd Blanchard wrote: >>>>> I have >>>>> >>>>> MarkerGraphic.__table__.create() >>>>> EventType.__table__.create() >>>>> >>>>> In the upgrade portion of my script >>>> >>>> SQL for CREATE TABLE will be emitted unconditionally at the point at >>>> which >>>> create() is called - which implies that part of the script isn't being >>>> called for whatever reason, or perhaps you have some engine/URL >>>> confusion >>>> going on. >>>> >>>> I'd also ditch all the session stuff that isn't necessary for migrate. >>>> >>>> Also make sure you're on 0.5.8 or 0.6 trunk to eliminate the possibility >>>> of any bugs in very old versions of 0.5 (and don't even consider 0.4). >>>> >>>> >>>> >>>>> >>>>> Sent from my iPhone >>>>> >>>>> On Jan 25, 2010, at 8:14, Michael Bayer <[email protected]> >>>>> wrote: >>>>> >>>>>> Todd Blanchard wrote: >>>>>>> I have this definition in my upgrade script using migrate >>>>>>> >>>>>>> meta = MetaData(migrate_engine) >>>>>>> DeclarativeBase = declarative_base(metadata=meta) >>>>>>> maker = sessionmaker(autoflush=True, autocommit=False, >>>>>>> extension=ZopeTransactionExtension()) >>>>>>> DBSession = scoped_session(maker) >>>>>>> DBSession.configure(bind=migrate_engine) >>>>>>> >>>>>>> class MarkerGraphic(DeclarativeBase): >>>>>>> __tablename__ = 'marker_graphics' >>>>>>> id = Column(Integer, primary_key=True) >>>>>>> base_url = Column(Unicode,default="http://chart.apis.google.com/ >>>>>>> chart") >>>>>>> >>>>>>> class EventType(MarkerGraphic): >>>>>>> __tablename__ = 'event_types' >>>>>>> __mapper_args__ = {'concrete':True} >>>>>>> >>>>>>> id = Column(Integer, primary_key=True) >>>>>>> name = Column(Unicode(60), nullable=False, unique=True) >>>>>>> >>>>>>> def __unicode__(self): >>>>>>> return self.name >>>>>>> >>>>>>> and when doing an upgrade, only the EventType columns are created in >>>>>>> the db (postgresql). >>>>>>> >>>>>>> Is concrete not compatible with declarative? >>>>>> >>>>>> Concrete is entirely compatible with declarative. I don't see where >>>>>> you're issuing metadata.create_all() above, yet you say its creating >>>>>> one >>>>>> of the tables, so the above is not a full script. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> >>>>>>> -- >>>>>>> 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. >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> 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 >>>>>> . >>>>>> >>>>> >>>>> -- >>>>> 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. >>>>> >>>>> >>>> >>>> -- >>>> 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. >>>> >>> >>> -- >>> 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. >>> >>> >> >> -- >> 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. >> > > -- > 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. > -- 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.
