解析mysql并将adql转换为mysql。
queryparser-python3的Python项目详细描述
用于分析和处理mysql和adql select查询的工具
与django-daiquri一起使用 作为查询处理后端,但它可以很容易地用作独立工具 或者整合到另一个项目中。
安装
安装软件包的最简单方法是使用pip工具:
pip install queryparser-python3
或者如果您使用的是较旧版本(2.7)的python
pip install queryparser-python2
或者,您可以克隆存储库并从那里安装它。 但是,这个步骤还需要生成一个 更详细的过程(见下文)。
从git存储库生成解析器
要生成语法分析器,您需要pythonpython(2或3),java以上版本 以及antlr4(antlr-4.*-complete.jar必须安装在 /usr/local/lib/或/usr/local/bin/目录)。
克隆项目后运行
make
将创建一个包含python2完整源代码的lib目录 还有Python3号。之后运行
python setup.py install
在虚拟环境中安装生成的解析器。
分析mysql
可以通过创建实例来解析和处理mysql查询 属于MySQLQueryProcessor类
fromqueryparser.mysqlimportMySQLQueryProcessorqp=MySQLQueryProcessor()
向它提供mysql查询
sql="SELECT a FROM db.tab;"qp.set_query(sql)
并使用
qp.process_query()
在处理之后,处理器对象qp将包括表、列, 查询中使用的函数和关键字或将引发QuerySyntaxError 如果查询中有语法错误。
或者,在初始化时传递查询会自动处理它。
翻译ADQL
通过首先创建 ADQLQueryTranslator类
fromqueryparser.adqlimportADQLQueryTranslatoradql="SELECT TOP 100 POINT('ICRS', ra, de) FROM db.tab;"adt=ADQLQueryTranslator(adql)
打电话给
adt.to_mysql()
它返回一个转换后的字符串,表示一个有效的mysql查询,如果 ADQL查询没有错误。然后可以使用 MySQLQueryProcessor方法与上面所示相同。
测试
首先,安装pytest
pip install pytest
然后为要使用的python版本运行测试套件
pytest lib/python2 pytest lib/python3