Tableau is a collection of helper classes for building test fixtures and seed data
Project description
Tableau is a collection of helper classes for building test fixtures and seed data.
Model composition without any predefined schemas. The model object relationships are automatically deduced through the value annotations:
from tableau import Datum foo = Datum( 'Foo', ('id'), # schema name / identifiers id=1, field_a=1, field_b=2, collection=one_to_many([ Datum( 'Bar', auto('id'), # id will be automagically generated by the walker field_c=1 ), Datum( 'Bar', auto('id'), field_c=1 ), ], referring_fields='foo_id' ) )
Export the model object graph to plain ANSI SQL statements, in the ORM-agnostic manner:
import sys from tableau import Datum, DataSuite, DataWalker from tableau.sql import SQLGenerator # ... suite = DataSuite() DataWalker(suite)(foo) SQLGenerator(sys.stdout, encoding='utf-8')(suite)
The above yields the following SQL statements:
INSERT INTO `Foo` (`id`, `field_a`, `field_b`) VALUES (1, 1, 2); INSERT INTO `Bar` (`id`, `field_c`, `foo_id`) VALUES (1, 1, 1), (2, 1, 1);
Automatically mapping the existing SQLAlchemy tables / declarative classes to the Data:
from tableau.sqla import newSADatum # metadata = ... # Base = ... # session = ... class Foo(Base): __tablename__ = 'foos' id = Column(Integer, primary_key=True) field = Column(String) def some_model_specific_method(self): return self.field Datum = newSADatum(metadata, Base) datum = Datum( 'foos', ('id'), field='test' ) print datum.some_model_specific_method() # 'test' session.add(datum) # it can even be added to the session!
Change history
- 0.0.0
Unreleased.
- 0.0.1
First release. No docs!
- 0.0.2
Support mapping to SQLAlchemy tables and declarative classses. Still no docs!
- 0.0.3
Fix critical bugs in 0.0.2.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.