Parses MySQL and translates ADQL to MySQL.
Let’s parse some MySQL and ADQL!
Processing of MySQL queries is done by first creating an instance of the MySQLQueryProcessor class
from queryparser.mysql import MySQLQueryProcessor qp = MySQLQueryProcessor()
feeding it a MySQL query
sql = "SELECT a FROM b;" qp.set_query(sql)
and running it with
After the processing, the processor object will include columns, functions, and keywords used 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 a,b FROM c" adt = ADQLQueryTranslator(adql)
which returns a translated string.
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.
There are some example queries in the testing directory. Have a look there, edit run.py (just comment out/uncomment the line you want in main) and run it:
This will parse a number of queries (specified in the corresponding example-files) and print the query, the parsed columns and the parsing time.
- more Documentation
- ADQL coordinate systems
- ADQL mixed coordinates