将数据从SQL数据库导出为一组文件格式。

datafreeze的Python项目详细描述


Build Status

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配置。

详细选项

冻结文件有两个主要部分,commonexports。两个 接受许多相同的参数,使用exports指定 当common定义一些共享属性时导出,例如 数据库连接字符串。

可以识别以下选项:

  • database是数据库uri,包括数据库类型、用户名 以及密码、主机名和数据库名。有效的数据库类型包括 sqlitemysqlpostgresql(需要psycopg2)。
  • prefix为所有提取的文件指定一个公共根目录。
  • format标识要生成的格式,csvjsontabson受支持。tabson是一个压缩的json 行不是由对象表示而是由 值列表。
  • query必须是有效的SQL语句。所有选定字段将 成为输出中的键或列,因此定义 如果需要重叠,请使用正确的别名。
  • mode指定是否将查询输出合并为 单个文件(list)或是否应为每个 结果行(item)。
  • filename是附加到prefix的输出文件名。全部 出现的{{field}}扩展为字段值,以允许 按主键生成文件名。在列表模式下,模板化 可用于将记录分组到多个存储桶中,例如按国家或 类别。
  • wrap可用于指定是否应包装输出 在json输出中的resultshash中。默认为truelist模式输出和item模式的false

贡献者

datasetFriedrich LindenbergGregor AischStefan Wehrmeyer。我们站在 shoulders of giants

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

推荐PyPI第三方库


热门话题
java对象相等方法?   通过java从Mercury质量中心9读取测试数据   在Java中设置双精度值的小数点后2位   java从一个文件读取,导出到另一个文件   java在不包含JVM的机器上运行桌面应用程序的可能性   java CountDownLatch在尝试等待()时引发异常   java Toast继承主题背景   我的游戏操纵杆的java问题   java BringToFront Force关闭应用程序   spring boot无法通过java cloud sdk调用GCP NLP   多线程Java线程高cpu利用率?   使用TextField<Integer>   java无法连续读取/监视远程文件   java Android使用Mashape获取验证错误   java确保Android Studio构建不依赖于物理设备的缓存版本   java AWS Lambda Cloudwatch规则   java Spring在尝试创建数据源bean或JDBC模板时无法解析占位符   java MergeSort实现提供了StackOverflow