Noah and I traded a couple of messages directly about this off-list. I
tried reading Noah's file and and it worked just fine, get_children
showed the accounts; on their computer it did not. I was using the
python bindings for GNuCash 5.5 that are shipped with Ubuntu 24.04. I
don't know how to get the version of the gnucash bindings from inside
python, so I'm not sure what version Noah was using, however they are
on mac OS. 
Does anyone have suggestions why I would see the list of accounts and
Noah would not?

Example output from my system. Noah gets an empty list when calling
get_children().

>python3
Python 3.12.3 (main, Sep 11 2024, 14:17:37) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gnucash
>>> filename = 'gnucash_localSave.gnucash'
>>> session = gnucash.Session(filename,
gnucash.SessionOpenMode.SESSION_NORMAL_OPEN)
>>> root_account = session.book.get_root_account()
>>> root_account.get_children()
[<gnucash.gnucash_core.Account object at 0x70e7709b6330>,
<gnucash.gnucash_core.Account object at 0x70e7709b7d10>,
<gnucash.gnucash_core.Account object at 0x70e7709b7e90>]
>>> session.end()
>>> quit()

Jon

On Fri, 2024-10-25 at 19:59 -0500, Jon Schewe wrote:
> You want "get_children" instead of "get_descendents".
> 
> On Thu, 2024-10-24 at 21:51 -0700, Noerr via gnucash-user wrote:
> > Hi,
> > 
> >      I've been trying to get started with the GnuCash API Python
> > bindings
> > after just using the main desktop app for the last 12 years.
> > I built GnuCash app (Build ID: 5.9+(2024-09-28) along with API and
> > Python
> > bindings enabled for my system (MacOS 15.0 , M1 Arm)
> > 
> > My problem is that I haven't been able to interact with my GnuCash
> > data in
> > a useful way yet.  Namely, I can't seem to access any existing
> > accounts,
> > and thus no transactions either.  Nor any entries in the price
> > database.
> > 
> > First I used the desktop app to save-as a copy of my GnuCash data
> > in
> > the
> > XML format.
> > Next I use python and  commands generally like the following.  I do
> > not see
> > any output that is expected when iterating over the descendants of
> > root_account.  ( I never see the text output, 'checking a
> > descendant...' )
> > 
> > 
> > from gnucash import (Session, Account, Transaction, Split,
> > GncNumeric,
> > SessionOpenMode, gnucash_core)
> > uri="file:///Users/me/Downloads/gnucash_localSave.gnucash"
> > session = Session(book_uri=uri,
> > mode=gnucash_core.SessionOpenMode.SESSION_NORMAL_OPEN )
> > book = session.book
> > table = book.get_table()
> > currency_code = 'USD'
> > currency = table.lookup('ISO4217', currency_code)
> > root_account = book.get_root_account()
> > for acc in root_account.get_descendants():
> >     print('checking a descendant...')
> >     if acc.GetType() == ACCT_TYPE_STOCK:
> >         print('found a stock')
> > 
> > 
> > **So why is root_account.get_descendants() returning an empty
> > container?**
> > 
> > The Bindings/API aren't completely dead though.  With the same
> > session and
> > book open above, I was playing around with some of the ideas
> > Eberhard
> > demonstrated in this thread [
> > https://lists.gnucash.org/pipermail/gnucash-user/2024-September/113402.html
> > ]
> > and I called
> > > > > create_accounts(session, book, root_acct)
> > > > > quit()
> > 
> > To my suprise, when I used the desktop app to open
> > gnucash_localSave.gnucash, my real accounts and transactions are
> > gone, but
> > I have three accounts: Expenses, Opening Balance, and Savings in
> > CAD
> > currency, and with the specified opening balances.
> > So the Bindings and API worked to create stuff.
> > 
> > As an aside, the file did flag as locked upon open in the desktop
> > app.  I
> > suspect there's a missing unlock somewhere in Python Bindings /
> > destructor
> > code.
> > 
> > Cheers,
> > 
> > Noah
> > _______________________________________________
> > gnucash-user mailing list
> > gnucash-user@gnucash.org
> > To update your subscription preferences or to unsubscribe:
> > https://lists.gnucash.org/mailman/listinfo/gnucash-user
> > -----
> > Please remember to CC this list on all your replies.
> > You can do this by using Reply-To-List or Reply-All.
> 
> _______________________________________________
> gnucash-user mailing list
> gnucash-user@gnucash.org
> To update your subscription preferences or to unsubscribe:
> https://lists.gnucash.org/mailman/listinfo/gnucash-user
> -----
> Please remember to CC this list on all your replies.
> You can do this by using Reply-To-List or Reply-All.

_______________________________________________
gnucash-user mailing list
gnucash-user@gnucash.org
To update your subscription preferences or to unsubscribe:
https://lists.gnucash.org/mailman/listinfo/gnucash-user
-----
Please remember to CC this list on all your replies.
You can do this by using Reply-To-List or Reply-All.

Reply via email to