将sql转换为sqlalchemy表达式
sqlitis的Python项目详细描述
sqlitis
这是一个将普通sql查询转换为sqlalchemy表达式的工具。它可以从命令行或作为库使用。
这将转换为SQLAlchemy expression language。它不支持sqlalchemy orm。
$ pip install sqlitis
示例
将select查询转换为sqlachemy表达式:
$ sqlitis 'select foo.name, bar.value from foo join bar'select([foo.c.name, bar.c.value]).select_from(foo.join(bar))
转换联接:
$ sqlitis 'foo join bar on foo.id = bar.foo_id and (foo.val < 100 or bar.val < 100)' foo.join(bar, and_(foo.c.id == bar.c.foo_id, or_(foo.c.val < 100, bar.c.val < 100)))
运行测试
这个存储库包括一个数据驱动的测试套件以及样式检查(使用flake8)和自动代码格式化(使用yapf)。
用毒物来进行测试。
$ pip install tox ### Run everything $ tox ### Run just the unit/functional tests $ tox -e py27 ### Run just style/formatting checks $ tox -e flake8
yapf用于自动修复代码样式/格式错误。它将重新格式化您的代码。
### Auto-fix style/formatting checks
$ tox -e yapf
有三种类型的测试:
- 内部模型的单元测试
- 核心函数的单元测试
- 对sqlite数据库执行生成的sqlalchemy表达式的函数测试。
大多数测试都是从tests/data.json中的数据生成的。
SQL支持清单
- []选择
- [X]星:^{TT2}$
- [X]多列:^{TT3}$
- [X]限定列名:^{TT4}$
- [X]列别名:^{TT5}$
- []加入
- [X]普通联接:^{TT6}$
- [X]内部连接:^{TT7}$
- []左/右连接
- []外部连接
- [X]ON子句:^{TT8}$
- [X]接合(和/或):^{TT9}$
- [X]从子查询中选择:^{TT10}$
- [X]其中:^{TT11}$
- [X]介于:^{TT12}$
- [X]选择Distinct:^{TT13}$
- []聚合函数(sum,avg,count,min,max):SELECT COUNT(*) FROM foo
- []分组依据:^{TT15}$
- []喜欢
- []限制/偏移量
- []按
- []插入
- []更新
- []删除