Skip to main content

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


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)

Uploaded Source

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

Hashes for tableau-0.0.3.tar.gz
Algorithm Hash digest
SHA256 2c9a95c67477149a25cefd5d52b96048f79f797e5c533882826878ddeecd7b78
MD5 b8e21f0067e44b31311c03dbe966e959
BLAKE2b-256 0a818996109f1fab671f7867a8df878888bd85209d78e40aa2b795c96fb257a2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page