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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tableau-0.0.3.tar.gz
(11.2 kB
view details)
File details
Details for the file tableau-0.0.3.tar.gz.
File metadata
- Download URL: tableau-0.0.3.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c9a95c67477149a25cefd5d52b96048f79f797e5c533882826878ddeecd7b78
|
|
| MD5 |
b8e21f0067e44b31311c03dbe966e959
|
|
| BLAKE2b-256 |
0a818996109f1fab671f7867a8df878888bd85209d78e40aa2b795c96fb257a2
|