.. image:: https://badges.gitter.im/sdementen/piecash.svg :alt: Join the chat at https://gitter.im/sdementen/piecash :target: https://gitter.im/sdementen/piecash?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
.. image:: https://github.com/sdementen/piecash/workflows/CI/badge.svg :target: https://github.com/sdementen/piecash/actions
.. image:: https://ci.appveyor.com/api/projects/status/af7mb3pwv31i6ltv/branch/master?svg=true :target: https://ci.appveyor.com/project/sdementen/piecash
.. image:: https://readthedocs.org/projects/piecash/badge/?version=master :target: http://piecash.readthedocs.org
.. image:: https://img.shields.io/pypi/v/piecash.svg :target: https://pypi.python.org/pypi/piecash
.. image:: https://img.shields.io/pypi/pyversions/piecash.svg :target: https://pypi.python.org/pypi/piecash/
.. image:: https://img.shields.io/pypi/dd/piecash.svg :target: https://pypi.python.org/pypi/piecash/
.. image:: https://requires.io/github/sdementen/piecash/requirements.svg?branch=master :target: https://requires.io/github/sdementen/piecash/requirements/?branch=master
.. image:: https://coveralls.io/repos/sdementen/piecash/badge.svg?branch=master&service=github :target: https://coveralls.io/github/sdementen/piecash?branch=master
Piecash provides a simple and pythonic interface to GnuCash files stored in SQL (sqlite3, Postgres and MySQL).
:Documentation: http://piecash.readthedocs.org. :Gitter: https://gitter.im/sdementen/piecash :Github: https://github.com/sdementen/piecash :PyPI: https://pypi.python.org/pypi/piecash
It is a pure python package, tested on python 3.6 to 3.9, that can be used as an alternative to:
piecash test suite runs successfully on Windows and Linux on the three supported SQL backends (sqlite3, Postgres and MySQL). piecash has also been successfully run on Android (sqlite3 backend) thanks to Kivy buildozer and python-for-android.
It allows you to:
Scripts are also available to:
A simple example of a piecash script:
.. code-block:: python
with open_book("example.gnucash") as book: # get default currency of book print( book.default_currency ) # ==> Commodity<CURRENCY:EUR> # iterating over all splits in all books and print the transaction description: for acc in book.accounts: for sp in acc.splits: print(sp.transaction.description)
The project has reached beta stage.
If you want to work with python 2.7/3.4 and books from gnucash 2.6.x series, you can use piecash 0.19.0. Versions of piecash as of 1.0.0 supports python >=3.6 and books from gnucash 3.0.x series.
1) Always do a backup of your gnucash file/DB before using piecash. 2) Test first your script by opening your file in readonly mode (which is the default mode)