[GNC] Database storage

Mark at Lorimark mark at lorimarksolutions.com
Fri Sep 20 10:57:56 EDT 2024


Hi Chris,

I have ~some~ knowledge.

In SQL, these are the 'tables' used for storage;

> sqlite> .tables
> accounts          employees         orders            taxtables       
> billterms         entries           prices            transactions    
> books             gnclock           recurrences       vendors         
> budget_amounts    gnucashew_vars    schedxactions     versions        
> budgets           invoices          slots           
> commodities       jobs              splits          
> customers         lots              taxtable_entries

The .schema on the tables is pretty clear.  The 'split's are stored in 
splits and transaction stored in transactions and so forth...

What would you like to know?

~mark petryk
~w:http://www.lorimarksolutions.com

On 9/20/24 09:29, Chris Miller via gnucash-user wrote:
> Hi Robert,
> 
>> One thing that all of the *SQL backends do provide over the flat XML file
>> storage: accessing the data (*read-only!*) between runs of GnuCash is easier.
>> Instead of either trying to parse the XML or using Python bindings to the
>> GnuCash API, one can write code using SQL (in any language that supports SQL)
>> to grab data to generate reports, etc. outside of the GnuCash framework. I
>> believe at least one person on this list does exactly that.
> Oh! Do I understand the GnuCash parses the data and stores it in database tables? --- like one table for each account? Or are all the rows going to be the same with each row being an accounting transaction "acct 1 $X.XX acct 2 -$X.XX"? What about "splits"?
> 
> Thanks for the help,


More information about the gnucash-user mailing list