Parses MySQL and translates ADQL to MySQL.
Tool for parsing and processing MySQL and ADQL 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.
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 db.tab;" qp.set_query(sql)
and running it with
After the processing, the processor object qp will include 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.
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 db.tab' adt = ADQLQueryTranslator(adql)
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.
Generating the parser from the git repository
To generate the parsers you need python (either 2 or 3), java above version 7, and antlr4 (which 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 with the complete source for python2 and python3. After that, run:
python setup.py install
to install the generated parser in you virtual env.
First, install pytest
pip install pytest
then, run the test suite: