Format agnostic tabular data library (XLS, JSON, YAML, CSV)
Go to file
Kenneth Reitz 26b6faa88d Merge branch 'release/0.9.3' 2011-01-31 01:35:52 -05:00
docs New Year! 2011-01-10 19:28:12 -05:00
tablib sorting update. 2011-01-31 01:29:41 -05:00
.gitignore Whitespace. 2010-10-26 05:53:07 -07:00
AUTHORS Adde Luca Beltrame to AUTHORS. 2010-11-04 00:59:06 -04:00
HISTORY.rst Prepping for new release (0.9.3) 2011-01-31 00:58:16 -05:00
LICENSE New Year! 2011-01-10 19:28:12 -05:00
MANIFEST.in Moving tabbed cli to future feature branch. 2010-09-13 16:03:11 -04:00
NOTICE Markup license notice. 2011-01-31 01:33:12 -05:00
README.rst Prepping for new release (0.9.3) 2011-01-31 00:58:16 -05:00
TODO.rst TODO update. 2010-12-13 17:08:11 -05:00
fabfile.py fabfile typo. 2011-01-31 01:34:40 -05:00
reqs.txt Added reqs.txt 2010-09-13 15:48:08 -04:00
setup.py Version bump. 2011-01-31 01:33:00 -05:00
test_suite.sh Added test_suite.sh script. 2010-11-04 01:01:54 -04:00
test_tablib.py Support for sorting. Unit-tested. 2011-01-11 20:53:59 +01:00

README.rst

Tablib: format-agnostic tabular dataset library
===============================================

::

	_____         ______  ___________ ______  
	__  /_______ ____  /_ ___  /___(_)___  /_ 
	_  __/_  __ `/__  __ \__  / __  / __  __ \
	/ /_  / /_/ / _  /_/ /_  /  _  /  _  /_/ /
	\__/  \__,_/  /_.___/ /_/   /_/   /_.___/



Tablib is a format-agnostic tabular dataset library, written in Python. 

Output formats supported:

- Excel (Sets + Books)
- JSON (Sets + Books)
- YAML (Sets + Books)
- HTML (Sets)
- TSV (Sets)
- CSV (Sets)

Import formats supported:

- JSON (Sets + Books)
- YAML (Sets + Books)
- TSV (Sets)
- CSV (Sets)

Note that tablib *purposefully* excludes XML support. It always will.

Overview
--------

`tablib.Dataset()`
	A Dataset is a table of tabular data. It may or may not have a header row. They can be build and maniuplated as raw Python datatypes (Lists of tuples|dictonaries). Datasets can be imported from JSON, YAML, and CSV; they can be exported to Excel (XLS), JSON, YAML, and CSV.
	
`tablib.Databook()`
	A Databook is a set of Datasets. The most common form of a Databook is an Excel file with multiple spreadsheets. Databooks can be imported from JSON and YAML; they can be exported to Excel (XLS), JSON, and YAML.

Usage
-----

    
Populate fresh data files: ::
    
    headers = ('first_name', 'last_name')

    data = [
        ('John', 'Adams'),
        ('George', 'Washington')
    ]
    
    data = tablib.Dataset(*data, headers=headers)


Intelligently add new rows: ::

    >>> data.append(('Henry', 'Ford'))

Intelligently add new columns: ::

    >>> data.append(col=(90, 67, 83), header='age')
    
Slice rows:  ::

    >>> print data[:2]
    [('John', 'Adams', 90), ('George', 'Washington', 67)]
    

Slice columns by header: ::

    >>> print data['first_name']
    ['John', 'George', 'Henry']

Easily delete rows: ::

    >>> del data[1]

Exports
-------

Drumroll please...........

JSON! 
+++++
::

	>>> print data.json
	[
	  {
	    "last_name": "Adams",
	    "age": 90,
	    "first_name": "John"
	  },
	  {
	    "last_name": "Ford",
	    "age": 83,
	    "first_name": "Henry"
	  }
	]
	

YAML! 
+++++
::

	>>> print data.yaml
	- {age: 90, first_name: John, last_name: Adams}
	- {age: 83, first_name: Henry, last_name: Ford}
	
CSV... 
++++++
::

	>>> print data.csv
	first_name,last_name,age 
	John,Adams,90 
	Henry,Ford,83 
	
EXCEL! 
++++++
::

	>>> open('people.xls', 'wb').write(data.xls)

It's that easy.

Imports!
--------

JSON
++++

::

	>>> data.json = '[{"last_name": "Adams","age": 90,"first_name": "John"}]'
	>>> print data[0]
	('John', 'Adams', 90)


YAML
++++
::

	>>> data.yaml = '- {age: 90, first_name: John, last_name: Adams}'
	>>> print data[0]
	('John', 'Adams', 90)

CSV
+++
::

	>>> data.csv = 'age, first_name, last_name\n90, John, Adams'
	>>> print data[0]
	('John', 'Adams', 90)
	
	>>> print data.yaml
	- {age: 90, first_name: John, last_name: Adams}
	


Installation
------------

To install tablib, simply: ::

	$ pip install tablib
	
Or, if you absolutely must: ::

	$ easy_install tablib
   
Contribute
----------

If you'd like to contribute, simply fork `the repository`_, commit your changes to the **develop** branch (or branch off of it), and send a pull request. Make sure you add yourself to AUTHORS_.


Roadmap
-------
- Release CLI Interface
- Auto-detect import format
- Add possible other exports (SQL?)
- Ability to assign types to rows (set, regex=, &c.)

.. _`the repository`: http://github.com/kennethreitz/tablib
.. _AUTHORS: http://github.com/kennethreitz/tablib/blob/master/AUTHORS