将数据从SQL数据库导出为一组文件格式。
datafreeze的Python项目详细描述
datafreeze创建用于交互的sql数据库的静态提取 网络应用程序。sql数据库是一种管理关系数据的好方法,但是 在网络上公开它们来驱动数据应用程序可能会很麻烦。通常, 实际上并不需要适当数据库的容量,一些静态json 文件和一点javascript也有同样的效果。不过,导出json 手工(或使用自定义脚本)也可能成为一个混乱的过程。
使用datafreeze,导出将在类似makefile的描述中编写脚本, 使它们易于重复和复制。
安装
安装datafreeze的最简单方法是从python中检索它 使用pip:
的包索引pip install datafreeze
基本用法
调用datafreeze很简单,用 冻结文件作为参数:
datafreeze Freezefile.yaml
冻结文件可以用json或yaml编写。数据库uri 也可以通过命令行覆盖冻结文件中指示的内容:
datafreeze --db sqlite:///foo.db Freezefile.yaml
示例freezefile.yaml
冻结文件由一组脚本查询和 关于如何处理其输出的规范。举个例子 像这样:
common:database:"postgresql://user:password@localhost/operational_database"prefix:my_project/dumps/format:jsonexports:-query:"SELECTid,title,dateFROMevents"filename:"index.json"-query:"SELECTid,title,date,countryFROMevents"filename:"countries/{{country}}.csv"format:csv-query:"SELECT*FROMevents"filename:"events/{{id}}.json"mode:item-query:"SELECT*FROMevents"filename:"all.json"format:tabson
在这个存储库中可以找到相同的json配置。
详细选项
冻结文件有两个主要部分,common和exports。两个 接受许多相同的参数,使用exports指定 当common定义一些共享属性时导出,例如 数据库连接字符串。
可以识别以下选项:
- database是数据库uri,包括数据库类型、用户名 以及密码、主机名和数据库名。有效的数据库类型包括 sqlite、mysql和postgresql(需要psycopg2)。
- prefix为所有提取的文件指定一个公共根目录。
- format标识要生成的格式,csv,json和 tabson受支持。tabson是一个压缩的json 行不是由对象表示而是由 值列表。
- query必须是有效的SQL语句。所有选定字段将 成为输出中的键或列,因此定义 如果需要重叠,请使用正确的别名。
- mode指定是否将查询输出合并为 单个文件(list)或是否应为每个 结果行(item)。
- filename是附加到prefix的输出文件名。全部 出现的{{field}}扩展为字段值,以允许 按主键生成文件名。在列表模式下,模板化 可用于将记录分组到多个存储桶中,例如按国家或 类别。
- wrap可用于指定是否应包装输出 在json输出中的resultshash中。默认为truelist模式输出和item模式的false。
贡献者
dataset由Friedrich Lindenberg、Gregor Aisch和 Stefan Wehrmeyer。我们站在 shoulders of giants。