Dump (freeze) SQL query results from a database into a selection of file formats
Alternatives To Datafreeze
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Superset52,260212 hours ago3April 29, 20221,337apache-2.0TypeScript
Apache Superset is a Data Visualization and Data Exploration Platform
Tidb34,1446810111 hours ago1,289April 07, 20224,015apache-2.0Go
TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at :
10 hours ago1June 08, 20223,032otherClojure
The simplest, fastest way to get business intelligence and analytics to everyone in your company :yum:
11 hours ago1,744apache-2.0Java
Free universal database tool and SQL client
Cockroach27,223502210 hours ago248August 06, 20216,642otherGo
CockroachDB - the open source, cloud-native distributed SQL database.
17 hours ago1February 27, 201860otherPython
Automatic SQL injection and database takeover tool
Directus21,7525011 hours ago55September 22, 2022228otherTypeScript
The Modern Data Stack 🐰 — Directus is an instant REST+GraphQL API and intuitive no-code data collaboration app for any SQL database.
Tdengine21,402110 hours ago12April 14, 20221,022agpl-3.0C
TDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.
10 hours ago35December 14, 2021220otherRust
A scalable, distributed, collaborative, document-graph database, for the realtime web
420 hours ago37July 12, 2022209mitHaskell
REST API for any Postgres database
Alternatives To Datafreeze
Select To Compare

Alternative Project Comparisons


Build Status

datafreeze creates static extracts of SQL databases for use in interactive web applications. SQL databases are a great way to manage relational data, but exposing them on the web to drive data apps can be cumbersome. Often, the capacities of a proper database are not actually required, a few static JSON files and a bit of JavaScript can have the same effect. Still, exporting JSON by hand (or with a custom script) can also become a messy process.

With datafreeze, exports are scripted in a Makefile-like description, making them simple to repeat and replicate.


The easiest way to install datafreeze is to retrieve it from the Python package index using pip:

pip install datafreeze

Basic Usage

Calling DataFreeze is simple, the application is called with a freeze file as its argument:

datafreeze Freezefile.yaml

Freeze files can be either written in JSON or in YAML. The database URI indicated in the Freezefile can also be overridden via the command line:

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

Example Freezefile.yaml

A freeze file is composed of a set of scripted queries and specifications on how their output is to be handled. An example could look like this:


  database: "postgresql://user:[email protected]/operational_database"
  prefix: my_project/dumps/
  format: json


  - 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

An identical JSON configuration can be found in this repository.

Options in detail

The freeze file has two main sections, common and exports. Both accept many of the same arguments, with exports specifying a list of exports while common defines some shared properties, such as the database connection string.

The following options are recognized:

  • database is a database URI, including the database type, username and password, hostname and database name. Valid database types include sqlite, mysql and postgresql (requires psycopg2).
  • prefix specifies a common root directory for all extracted files.
  • format identifies the format to be generated, csv, json and tabson are supported. tabson is a condensed JSON representation in which rows are not represented by objects but by lists of values.
  • query needs to be a valid SQL statement. All selected fields will become keys or columns in the output, so it may make sense to define proper aliases if any overlap is to be expected.
  • mode specifies whether the query output is to be combined into a single file (list) or whether a file should be generated for each result row (item).
  • filename is the output file name, appended to prefix. All occurences of {{field}} are expanded to a fields value to allow the generation of file names e.g. by primary key. In list mode, templating can be used to group records into several buckets, e.g. by country or category.
  • wrap can be used to specify whether the output should be wrapped in a results hash in JSON output. This defaults to true for list-mode output and false for item-mode.


dataset is written and maintained by Friedrich Lindenberg, Gregor Aisch and Stefan Wehrmeyer. We're standing on the shoulders of giants.

Popular Database Projects
Popular Sql Projects
Popular Data Storage Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.