You can query history models just like any other sqlalchemy declarative model.
from sqlalchemy_continuum import version_class
ArticleVersion = version_class(Article)
session.query(ArticleVersion).filter_by(name=u'some name').all()
from sqlalchemy_continuum import transaction_class
Transaction = transaction_class(Article)
Transaction.query.count()
In the following example we find all articles which were affected by transaction 33.
session.query(ArticleVersion).filter_by(transaction_id=33)
In this example we find all transactions which affected any instance of 'Article' model. This query needs the TransactionChangesPlugin.
TransactionChanges = Article.__versioned__['transaction_changes']
entries = (
session.query(Transaction)
.innerjoin(Transaction.changes)
.filter(
TransactionChanges.entity_name.in_(['Article'])
)
)
In the following example we want to find all versions of Article class which changed the attribute 'name'. This example assumes you are using PropertyModTrackerPlugin.
ArticleVersion = version_class(Article)
session.query(ArticleHistory).filter(ArticleVersion.name_mod).all()