Metadata-Version: 2.0
Name: play-sql
Version: 0.0.1
Summary: pytest-play support for SQL expressions and assertions
Home-page: https://github.com/tierratelematics/play_sql
Author: Davide Moro
Author-email: davide.moro@gmail.com
License: Apache Software License 2.0
Description-Content-Type: UNKNOWN
Keywords: play_sql
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Requires-Dist: pytest-play (>=1.0.0)
Requires-Dist: SQLAlchemy
Requires-Dist: play-python
Provides-Extra: tests
Requires-Dist: pytest; extra == 'tests'
Requires-Dist: pytest-cov; extra == 'tests'
Requires-Dist: mock; extra == 'tests'

========
play sql
========


.. image:: https://img.shields.io/pypi/v/play_sql.svg
        :target: https://pypi.python.org/pypi/play_sql

.. image:: https://img.shields.io/travis/tierratelematics/play_sql.svg
        :target: https://travis-ci.org/tierratelematics/play_sql

.. image:: https://readthedocs.org/projects/play-sql/badge/?version=latest
        :target: https://play-sql.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status

.. image:: https://codecov.io/gh/tierratelematics/play_sql/branch/develop/graph/badge.svg
        :target: https://codecov.io/gh/tierratelematics/play_sql


pytest-play support for SQL expressions and assertions

More info and examples on:

* pytest-play_, documentation
* cookiecutter-qa_, see ``pytest-play`` in action with a working example if you want to start hacking


Features
========

This project defines a new pytest-play_ command:

::

    {'type': 'sql',
     'provider': 'play_sql',
     'database_url': 'postgresql://$db_user:$db_pwd@$db_host/$db_name',
     'query': 'SELECT id, title FROM invoices',
     'variable': 'invoice_id',
     'variable_expression': 'results.first()[0]',
     'condition': '1 > 0',
     'assertion': 'invoice_id == $invoice_id'}

where:

* ``database_url`` follows the format described 
  http://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls
* ``variable_expression`` is a Python expression
    * ``results.fetchone()`` returns an array whose elements matches with the next row's
      columns and it could be invoked many times until there will be no more rows (eg: first call
      ``(1, 'first',)``, second call ``(2, 'second')``)
    * ``results.first()`` returns an array whose elements matches with the first row's colums and it
      can be invoked exactly one time
    * ``results.fetchall()`` returns an array of tuples whose elements matches with the selected
      colums (eg: ``[(1, 'first'), (2, 'second'), (3, 'third')]``)

Fetch first
===========

Twitter
=======

``pytest-play`` tweets happens here:

* `@davidemoro`_

Credits
=======

This package was created with Cookiecutter_ and the cookiecutter-play-plugin_ (based on `audreyr/cookiecutter-pypackage`_ project template).

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage
.. _`cookiecutter-play-plugin`: https://github.com/tierratelematics/cookiecutter-play-plugin
.. _pytest-play: https://github.com/tierratelematics/pytest-play
.. _cookiecutter-qa: https://github.com/tierratelematics/cookiecutter-qa
.. _`@davidemoro`: https://twitter.com/davidemoro


=======
CHANGES
=======

0.0.1 (2018-01-11)
------------------

* First release


