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.

Reply via email to