Thank you Mike! Yes, indeed you are right and I referred to Single Table Inheritance <http://docs.sqlalchemy.org/en/latest/orm/inheritance.html#single-table-inheritance>! I would like to version just one subclass, i.e. a subset of that single table, and it sounds like that will work (source code link <https://bitbucket.org/zzzeek/sqlalchemy/src/f7b957b589207cae98b6feec63be84ee6423c3ca/examples/versioned_history/test_versioning.py?at=master&fileviewer=file-view-default#test_versioning.py-449>, though that example versions the base class). Great đź‘Ś
And if I wanted to walk the versions of a particular row, how would I do that? Suppose versioning in the example <http://docs.sqlalchemy.org/en/latest/orm/inheritance.html#single-table-inheritance> on Single Table Inheritance: # Versioned subclass. class Engineer(Versioned, Employee): engineer_info = Column(String(50)) # Retrieve a single Engineer object/row. eng = session.query(Engineer).filter(Engineer.id==N).one_or_none() # eng.version would give me the current version of the object/row. # How can I iterate over previous versions of the object/row? If I read the history_meta.py <https://bitbucket.org/zzzeek/sqlalchemy/src/f7b957b589207cae98b6feec63be84ee6423c3ca/examples/versioned_history/history_meta.py?fileviewer=file-view-default> in the example correctly, then versioned objects have a version <https://bitbucket.org/zzzeek/sqlalchemy/src/f7b957b589207cae98b6feec63be84ee6423c3ca/examples/versioned_history/history_meta.py?at=master&fileviewer=file-view-default#history_meta.py-88> and a changed <https://bitbucket.org/zzzeek/sqlalchemy/src/f7b957b589207cae98b6feec63be84ee6423c3ca/examples/versioned_history/history_meta.py?at=master&fileviewer=file-view-default#history_meta.py-95> property, but no property that is an iterator over previous versions. I'd have to query a history table manually? Would that be something like SELECT * FROM EngineerHistory WHERE id=N SORT BY version; -- EmployeeHistory?? Cheers! On Saturday, October 28, 2017 at 3:50:08 AM UTC+10, Mike Bayer wrote: > > On Thu, Oct 26, 2017 at 9:35 PM, <jens.t...@gmail.com <javascript:>> > wrote: > > Hello, > > > > I'm looking for a way track changes to table rows, very much like > described > > in this Stackoverflow question. > > > > SA supports versioning objects as described in the documentation: > > > http://docs.sqlalchemy.org/en/latest/orm/examples.html#versioning-objects > > Does this approach work for inherited classes as well? > > yes it does, there should be some coverage for joined inheritance in the > tests. > > > > I mean: can I version > > a class which doesn't have a table but is a subclass of a joined table > > inheritance? > > that would be single table inheritance if it doesn't have a table. > the test suite has both a multilevel-joined test and a single > inheritance test, doesn't seem to have tested joined inh to single but > it's likely it will just work if you try it out. > > > Or will I need to version the base class which has the table > > associated (something I'd like to avoid because I'd version much of what > > would not need versioning). > > I'm not sure if the versioning example tries this but the Versioned > mixin can be placed just on the class you care about versioning, and > it's likely it will just take effect when that class is present. The > Versioned mixin should be able to deal with each class independently > of all the rest. You'd need to try it out and see what it does. > > > > > > > Then there is SA Continuum, which seems more flexible but perhaps a > little > > too much for my needs. > > It's possible that Continuum was based on this example in the first > place but I would never remember if that detail is real or just made > up by my imagination. > > > > With projects like Continuum I'm always a bit worried > > about support and maintenance—any experiences with it? Does that support > > table inheritance? > > You could reach out to its maintainer (the username that posts it to > pypi, and /or the user that seems to have the most commits). If you > don't get a reply, that's a clue :) > > > > > > > > Thanks! > > Jens > > > > -- > > SQLAlchemy - > > The Python SQL Toolkit and Object Relational Mapper > > > > http://www.sqlalchemy.org/ > > > > To post example code, please provide an MCVE: Minimal, Complete, and > > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > > description. > > --- > > 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+...@googlegroups.com <javascript:>. > > To post to this group, send email to sqlal...@googlegroups.com > <javascript:>. > > Visit this group at https://groups.google.com/group/sqlalchemy. > > For more options, visit https://groups.google.com/d/optout. > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- 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 https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.