跳转到主要内容

将SQL数据库的数据导出到一组文件格式。

项目描述

Build Status

datafreeze 用于创建SQL数据库的静态提取,用于交互式Web应用程序。SQL数据库是管理关系数据的好方法,但将它们暴露在Web上以驱动数据应用程序可能会很麻烦。通常,并不真正需要合适的数据库功能,几个静态JSON文件和一些JavaScript也可以达到相同的效果。尽管如此,手动导出JSON(或使用自定义脚本)也可能变成一个混乱的过程。

使用 datafreeze,导出是在类似于Makefile的描述中脚本化的,这使得它们易于重复和复制。

安装

安装 datafreeze 最简单的方法是从Python包索引中使用 pip 获取它

pip install datafreeze

基本用法

调用DataFreeze很简单,应用程序通过冻结文件作为其参数调用

datafreeze Freezefile.yaml

冻结文件可以是JSON或YAML格式。Freezefile中指示的数据库URI也可以通过命令行覆盖

datafreeze --db sqlite:///foo.db Freezefile.yaml

示例Freezefile.yaml

冻结文件由一系列脚本查询和它们的输出应如何处理的说明组成。一个示例可能看起来像这样

common:

  database: "postgresql://user:password@localhost/operational_database"
  prefix: my_project/dumps/
  format: json

exports:

  - query: "SELECT id, title, date FROM events"
    filename: "index.json"

  - query: "SELECT id, title, date, country FROM events"
    filename: "countries/{{country}}.csv"
    format: csv

  - query: "SELECT * FROM events"
    filename: "events/{{id}}.json"
    mode: item

  - query: "SELECT * FROM events"
    filename: "all.json"
    format: tabson

相同的JSON配置可以在本存储库中找到。

详细选项

冻结文件包含两个主要部分,即通用导出。两者都接受许多相同的参数,其中导出指定导出列表,而通用定义了一些共享属性,例如数据库连接字符串。

以下选项被识别:

  • database是一个数据库URI,包括数据库类型、用户名和密码、主机名和数据库名。有效的数据库类型包括sqlitemysqlpostgresql(需要psycopg2)。

  • prefix指定所有提取文件的公共根目录。

  • format标识要生成的格式,支持csvjsontabsontabson是一种紧凑的JSON表示,其中行不是由对象表示,而是由值列表表示。

  • query需要是一个有效的SQL语句。所有选定的字段都将成为输出中的键或列,因此如果预期有任何重叠,定义适当的别名可能是有意义的。

  • mode指定查询输出是否应组合成单个文件(list)或为每行结果生成一个文件(item)。

  • filename是输出文件名,附加到prefix。所有出现的{{field}}都会扩展到字段值,以便允许通过主键生成文件名等。在列表模式下,可以使用模板将记录分组到几个桶中,例如按国家或类别。

  • wrap可用于指定输出是否应包含在JSON输出的results散列中。对于列表模式输出,默认为true,对于item模式,默认为false

贡献者

datasetFriedrich LindenbergGregor AischStefan Wehrmeyer编写和维护。我们站在巨人的肩膀上

项目详细信息


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分发

datafreeze-0.1.0.tar.gz (10.8 KB 查看哈希

上传时间:

构建分发

datafreeze-0.1.0-py2.py3-none-any.whl (13.8 KB 查看哈希

上传时间: Python 2 Python 3

由以下组织支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面