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数据库中的信息比通过这个接口公开的要多得多。 欢迎提出功能增强请求。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Android Java在活动之间传递值   java当实体中存在关系时,我可以只使用实体的id而不是从DB中获取实体吗?   bouncycastle Java运行SSHD服务器错误未找到类定义   java SWT/Swing>Threads n'Hell   java多线程数据库读取   java如何在Eclipse中轻松提交Git   java在哪里可以找到字符串相等比较的一组特定排序规则?   无连接表的java单向单域关系   java扩展三角文件   java spring。杰克逊。序列化。failonemptybeans   java无法加载请求的类:oracle。jdbc。驾驶员OracleDriver   java通过数组进行索引循环并打印出元素?   找不到eclipse错误类中的java提交Hadoop作业   Java:随机设定种子   java片段、异步任务和侦听器   java在分号后使用{}