Files
gnucash/src/optional/python-bindings/example_scripts/priceDB_test.py

44 lines
1.4 KiB
Python
Raw Normal View History

#!/usr/bin/env python
# Test file for price database stuff
# To update the price database call
# $PATH/gnucash --add-price-quotes $PATHTOFILE
# before running this.
# Adding to a calling bash script would be better
# Although calling it from here would be even better!
# OR: export PYTHONPATH=$HOME/progs/lib/python2.6/site-packages
# Then: gnucash-env ipython
# The account file is not saved but always use a disposable copy.
# Change, FILE, CURRENCY and STOCK to those defined in your test account.
import gnucash
from gnucash.gnucash_core_c import gnc_pricedb_get_db, gnc_pricedb_get_prices, gnc_pricedb_lookup_latest,gnc_pricedb_print_contents
from gnucash.gnucash_core import *
FILE = "PATH_TO_YOUR_TEST_FILE" ## Fail is no saved but use a copy anyway
session = Session("xml://%s" % FILE, True, False, False)
root = session.book.get_root_account()
book = session.book
pdb = book.get_price_db()
comm_table = book.get_table()
gbp = comm_table.lookup("CURRENCY", "SOME_CURRENCY")
arm = comm_table.lookup("NASDAQ", "SOME_STOCK")
latest = pdb.lookup_latest(arm,gbp) # from the table, NOT live data
value = latest.get_value()
pl = pdb.get_prices(arm,gbp)
for i in pl:
pr = GncPrice(instance=i)
source = pr.get_source()
time = pr.get_time()
v=pr.get_value()
price = float(v.num)/v.denom
print time, source, price
print arm.get_fullname(), float(v0.num) / float(v0.denom )
session.end()
session.destroy()
quit()