Skip to main content

Parses PostgreSQL/MySQL and translates ADQL to PostgreSQL/MySQL.

Project description

Tool for parsing and processing of MySQL/PostgreSQL and translation of ADQL SELECT-like queries

Designed to be used in conjunction with django-daiquri as a query processing backend but it can be easily used as a stand-alone tool or integrated into another project.

Build Status Coverage Status Latest Version


The easiest way to install the package is by using the pip tool:

pip install queryparser-python3

Alternatively, you can clone the repository and install it from there. However, this step also requires generating the parser which is a slightly more elaborate process (see below).

Generating the parser from the git repository

To generate the parsers you need python3 , java above version 7, and antlr4 (antlr-4.*-complete.jar has to be installed inside the /usr/local/lib/ or /usr/local/bin/ directories).

After cloning the project run


and a lib directory will be created. After that, run

python install

to install the generated parser in your virtual environment.

Parsing MySQL and PostgreSQL

Parsing and processing of MySQL queries can be done by creating an instance of the MySQLQueryProcessor class

from queryparser.mysql import MySQLQueryProcessor

qp = MySQLQueryProcessor()

feeding it a MySQL query

sql = "SELECT a FROM;"

and running it with


After the processing is completed, the processor object qp will include tables, columns, functions, and keywords used in the query or will raise a QuerySyntaxError if there are any syntax errors in the query.

Alternatively, passing the query at initialization automatically processes it.

PostgreSQL parsing is very similar to MySQL, except it requires importing the PostgreSQLProcessor class:

from queryparser.postgresql import PostgreSQLQueryProcessor

qp = PostgreSQLQueryProcessor()

The rest of the functionality remains the same.

Translating ADQL

Translation of ADQL queries is done similarly by first creating an instance of the ADQLQueryTranslator class

from queryparser.adql import ADQLQueryTranslator

adql = "SELECT TOP 100 POINT('ICRS', ra, de) FROM;"
adt = ADQLQueryTranslator(adql)

and calling


which returns a translated string representing a valid MySQL query if the ADQL query had no errors. The MySQL query can then be parsed with the MySQLQueryProcessor in the same way as shown above.


First, install pytest

pip install pytest

then run the test suite for a version of python you would like to test with

pytest lib/

More elaborate testing procedures can be found in the development notes.

Project details

Download files

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

Files for queryparser-python3, version 0.5.0
Filename, size File type Python version Upload date Hashes
Filename, size queryparser_python3-0.5.0-py3-none-any.whl (290.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size queryparser-python3-0.5.0.tar.gz (276.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page