mac数据库加速接口
qquer的Python项目详细描述
这个包提供了一个简单的接口来读取mac数据库的quicken。它包括两个 python模块和命令行接口。
查找数据库
Quicken for Mac将其用户文件保存在~/Library/Application Support/Quicken 2017。 在该目录中,数据库文件位于Documents/Qdata.quicken2017/data(或其附近)。 为了安全起见,不要直接操作此文件。复制为,例如:
# cd '~/Library/Application Support/Quicken 2017' # cd Documents/Qdata.quicken2017 # cp data /tmp/copyofqdata # cd /tmp # file copyofqdata copyofqdata: SQLite 3.x database, last written using SQLite version 3019003
最后一个命令的输出验证文件是否是sqlite数据库。
命令行工具
命令行工具,也称为qquery,为数据库提供了一个简单、方便的界面。 它提供了许多选项,所有选项都用–help开关描述:
# qquery --help
这里有一些例子。
列出所有帐户:
# qquery --qdb=copyofqdata --list-accounts
列出所有类别:
# qquery --qdb=copyofqdata --list-categories
列出所有事务(这会产生大量输出):
# qquery --qdb=copyofqdata --list-transactions
仅列出2016年发布的“第一国民”账户、“慈善”类别的交易:
# qquery --qdb=copyofqdata --list-transactions \ --restrict-to-accounts="First National" \ --restrict-to-categories="Charity" \ --date-from=2016-01-01 --date-to=2016-12-31
报告截至2016年12月31日所有账户的余额(包括证券明细)。 (不列出余额为零的账户):
# qquery --qdb=copyofqdata --report-holdings --date-to=2016-12-31
python模块
该模块可以以通常的方式包含在python程序中。也提供帮助。 使用以下命令可获取所有可用功能的列表:
>>> import qquery >>> help (qquery)
下面是如何使用函数getAccounts()提供的迭代器列出所有帐户。 每次遍历循环都为每个帐户返回一个字典:
>>> import qquery as qq >>> qq.open ('copyofqdata') >>> for account in qq.getAccounts(): ... print account ...
类似地,这是如何使用函数提供的迭代器列出所有类别的 getCategories()。 每次遍历循环都为每个类别返回一个字典:
>>> import qquery as qq >>> qq.open ('copyofqdata') >>> for category in qq.getCategories(): ... print category ...
对于所有使用getTransactions():
的事务>>> import qquery as qq >>> qq.open ('copyofqdata') >>> for trans in qq.getTransactions(): ... print trans ...
每个transdictionary都提供了许多字段,因此上面将生成 大量产出。您可以选择只检查其中的一些字段,如
>>> import qquery as qq >>> qq.open ('copyofqdata') >>> for trans in qq.getTransactions(): ... print trans['date'], trans['amount'], trans['payeeName'] ...
这可以使用setrestrictto函数进一步改进,例如:
>>> import qquery as qq >>> qq.open ('copyofqdata') >>> qq.setRestrictToAccounts ('First National') >>> qq.setRestrictToCategories ('Charity,Gifts') >>> qq.setRestrictToDates (dateFrom='2016-01-01', dateTo='2016-12-31') >>> for trans in qq.getTransactions(): ... print trans['date'], trans['amount'], trans['payeeName'] ...
下一步
quicken数据库中的信息比通过这个接口公开的要多得多。 欢迎提出功能增强请求。