Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Simple query interface for tabular data.

Project description

Squint is a light-weight query interface for tabular data that’s easy to learn and quick to use. A core feature of squint is that the structure of a query’s selection matches the structure of its result. With it you can:

  • Select data using Python literals—sets, lists, dictionaries, etc.—and get results in the same format.
  • Aggregate, map, filter, reduce, and otherwise manipulate data.
  • Lazily iterate over results, write them to a file, or eagerly evaluate them in memory.
  • Analyze data from CSV, Excel, SQL, and other data sources.


The squint package is tested on Python 2.6, 2.7, 3.2 through 3.8, PyPy, and PyPy3; and is freely available under the Apache License, version 2.

The easiest way to install squint is to use pip:

pip install squint

To upgrade an existing installation, use the “--upgrade” option:

pip install --upgrade squint

The development repository for squint is hosted on GitHub. If you need bug-fixes or features that are not available in the current stable release, you can “pip install” the development version directly from GitHub:

pip install --upgrade

All of the usual caveats for a development install should apply—only use this version if you can risk some instability or if you know exactly what you’re doing. While care is taken to never break the build, it can happen.

Some Examples

The examples below will query a CSV file containing the following data (example.csv):

x foo 20
x foo 30
y foo 10
y bar 20
z bar 10
z bar 10

To begin, we load the CSV file into a Select object:

import squint

select = squint.Select('example.csv')
When you select a The result contains a

single column


list of values from that column


tuple of columns

select(('A', 'B'))

list of tuples with values from those columns

[('x', 'foo'),
 ('x', 'foo'),
 ('y', 'foo'),
 ('y', 'bar'),
 ('z', 'bar'),
 ('z', 'bar')]

dictionary of columns

select({'A': 'C'})

dictionary with keys and values from those columns

{'x': [20, 30],
 'y': [10, 20],
 'z': [10, 10]}

(values are grouped by matching key)

dictionary with a tuple of column values

select({'A': ('B', 'C')})

dictionary with keys and tuples of values from those columns

{'x': [('foo', 20), ('foo', 30)],
 'y': [('foo', 10), ('bar', 20)],
 'z': [('bar', 10), ('bar', 10)]}

dictionary with a tuple of column keys

select({('A', 'B'): 'C'})

dictionary with tuple keys and values from those columns

{('x', 'foo'): [20, 30],
 ('y', 'foo'): [10],
 ('y', 'bar'): [20],
 ('z', 'bar'): [10, 10]}

Freely licensed under the Apache License, Version 2.0

Copyright 2015 - 2019 National Committee for an Effective Congress, et al.

Download files

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

Files for squint, version 0.0.2
Filename, size File type Python version Upload date Hashes
Filename, size squint-0.0.2-py2.py3-none-any.whl (41.5 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size squint-0.0.2.tar.gz (36.3 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page