Skip to main content

DQL

Build:

build coverage

Documentation:

http://dql.readthedocs.org/

Downloads:

http://pypi.python.org/pypi/dql

Source:

https://github.com/stevearc/dql

A simple, SQL-ish language for DynamoDB

Getting Started

The easiest way to use DQL is to download and run the install script:

curl -o install.py https://raw.githubusercontent.com/stevearc/dql/master/bin/install.py
python install.py

This will create a standalone dql file that you can run. If you would instead like to install it with pip:

pip install dql

Here are some basic DQL examples to get you going:

Start the REPL:

$ dql
us-west-1>

Creating a table:

us-west-1> CREATE TABLE forum_threads (name STRING HASH KEY,
         >                             subject STRING RANGE KEY,
         >                             THROUGHPUT (4, 2));

Inserting data:

us-west-1> INSERT INTO forum_threads (name, subject, views, replies)
         > VALUES ('Self Defense', 'Defense from Banana', 67, 4),
         > ('Self Defense', 'Defense from Strawberry', 10, 0),
         > ('Cheese Shop', 'Anyone seen the camembert?', 16, 1);

Queries:

us-west-1> SCAN * FROM forum_threads;
us-west-1> SELECT count(*) FROM forum_threads WHERE name = 'Self Defense';
us-west-1> SELECT * FROM forum_threads WHERE name = 'Self Defense';

Mutations:

us-west-1> UPDATE forum_threads ADD views 1 WHERE
         > name = 'Self Defense' AND subject = 'Defense from Banana';
us-west-1> DELETE FROM forum_threads WHERE name = 'Cheese Shop';

Changing tables:

us-west-1> ALTER TABLE forum_threads SET THROUGHPUT (8, 4);
us-west-1> DROP TABLE forum_threads;

And don’t forget to use help!

Changelog

0.5.26

  • Use python-future instead of six as compatibility library

  • Now distributing a wheel package

  • Bug fix: Confirmation prompts crash on Python 2

0.5.25

  • Bug fix: Compatibility errors with Python 3

0.5.24

  • Bug fix: Support key conditions where field has a - in the name

0.5.23

  • Bug fix: Default encoding error on mac

Dropping support for python 2.6

0.5.22

  • Bug fix: Can now run any CLI command using -c "command"

0.5.21

  • Bug fix: Crash fix when resizing terminal with ‘watch’ command active

  • ‘Watch’ columns will dynamically resize to fit terminal width

0.5.20

  • Bug fix: When saving to JSON floats are no longer cast to ints

  • Bug fix: Reserved words are correctly substituted when using WHERE … IN

0.5.19

  • Locked in the version of pyparsing after 2.1.5 broke compatibility again.

0.5.18

  • Bug fix: Correct name substitution/selection logic

  • Swapped out bin/run_dql.py for bin/install.py. Similar concept, better execution.

0.5.17

  • Bug fix: Can’t display Binary data

0.5.16

  • Bug fix: Can’t use boolean values in update statements

0.5.15

  • Gracefully handle missing imports on Windows

0.5.14

  • Missing curses library won’t cause ImportError

0.5.13

  • Fix bug where query would sometimes display ‘No Results’ even when results were found.

0.5.12

  • Differentiate LIMIT and SCAN LIMIT

  • Options and query syntax for throttling the consumed throughput

  • Crash fixes and other small robustness improvements

0.5.11

  • SELECT <attributes> can now use full expressions

0.5.10

  • LOAD command to insert records from a file created with SELECT ... SAVE

  • Default SAVE format is pickle

  • SAVE command can gzip the file

0.5.9

  • Don’t print results to console when saving to a file

  • ‘auto’ pagesize to adapt to terminal height

  • When selecting specific attributes with KEYS IN only those attributes are fetched

  • ORDER BY queries spanning multiple pages no longer stuck on first page

  • Column formatter fits column widths more intelligently

  • Smart formatter is smarter about switching to Expanded mode

0.5.8

  • Tab completion for Mac OS X

0.5.7

  • run_dql.py locks in a version

  • Display output auto-detects terminal width

0.5.6

  • Format option saves properly

  • WHERE expressions can compare fields to fields (e.g. WHERE foo > bar)

  • Always perform batch_get after querying/scanning an index that doesn’t project all attributes

0.5.5

  • General bug fixes

  • Self contained run_dql.py script

0.5.4

  • Fixes for watch display

  • SELECT can save the results to a file

0.5.3

  • ALTER commands can specify IF (NOT) EXISTS

  • New watch command to monitor table consumed capacities

  • SELECT can fetch attributes that aren’t projected onto the queried index

  • SELECT can ORDER BY non-range-key attributes

0.5.2

  • EXPLAIN <query> will print out the DynamoDB calls that will be made when you run the query

  • ANALYZE <query> will run the query and print out consumed capacity information

0.5.1

  • Pretty-format non-item query return values (such as count)

  • Disable passing AWS credentials on the command line

0.5.0

  • Breakage: New syntax for SELECT, SCAN, UPDATE, DELETE

  • Breakage: Removed COUNT query (now SELECT count(*))

  • Breakage: Removed the ability to embed python in queries

  • New alternative syntax for INSERT

  • ALTER can create and drop global indexes

  • Queries and updates now use the most recent DynamoDB expressions API

  • Unified options in CLI under the opt command

0.4.1

  • Update to maintain compatibility with new versions of botocore and dynamo3

  • Improving CloudWatch support (which is used to get consumed table capacity)

0.4.0

  • Breakage: Dropping support for python 3.2 due to lack of botocore support

  • Feature: Support for JSON data types

0.3.2

  • Bug fix: Allow ‘.’ in table names of DUMP SCHEMA command

  • Bug fix: Passing a port argument to local connection doesn’t crash

  • Bug fix: Prompt says ‘localhost’ when connected to DynamoDB local

0.3.1

  • Bug fix: Allow ‘.’ in table names

0.3.0

  • Feature: SELECT and COUNT can have FILTER clause

  • Feature: FILTER clause may OR constraints together

0.2.1

  • Bug fix: Crash when printing ‘COUNT’ queries

0.2.0

  • Feature: Python 3 support

0.1.0

  • First public release

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dql-0.5.26.tar.gz (45.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dql-0.5.26-py2.py3-none-any.whl (53.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file dql-0.5.26.tar.gz.

File metadata

  • Download URL: dql-0.5.26.tar.gz
  • Upload date:
  • Size: 45.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for dql-0.5.26.tar.gz
Algorithm Hash digest
SHA256 754c67111a75d3b3127592deb5eada61e5cd0f2e77bdffbeb89d1fc755c0da64
MD5 b5b86d73f0b911e37286ca1247e444dd
BLAKE2b-256 266c5b5eb96256b7964f1f664ffc04f56296a104615f0416b7176997fa31a1ed

See more details on using hashes here.

File details

Details for the file dql-0.5.26-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for dql-0.5.26-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8929c40c0524d1419305fd9a328109f69709ee63dfa28608dd35b189e36fa16c
MD5 d37f63ba261c1d335f2b66d968379804
BLAKE2b-256 47159cb4f586bb31c385c641119703e41a34ec6babf48c99426d8ea8a9e5ac54

See more details on using hashes here.

Release history Release notifications | RSS feed

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.28

2 files

0.5.27

2 files

This release

0.5.26 This release

2 files

0.5.25

2 files

0.5.24

1 file

0.5.23

1 file

0.5.22

1 file

0.5.21

1 file

0.5.20

1 file

0.5.19

1 file

0.5.18

1 file

0.5.17

1 file

0.5.16

1 file

0.5.15

1 file

0.5.14

1 file

0.5.13

1 file

0.5.12

1 file

0.5.11

1 file

0.5.10

1 file

0.5.9

1 file

0.5.8

1 file

0.5.7

1 file

0.5.6

1 file

0.5.5

1 file

0.5.4

1 file

0.5.3

1 file

0.5.2

1 file

0.5.1

1 file

0.5.0

1 file

0.4.1

1 file

0.4.0

1 file

0.3.2

1 file

0.3.1

1 file

0.3.0

1 file

0.2.1

1 file

0.2.0

1 file

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page