将sql转换为sqlalchemy表达式

sqlitis的Python项目详细描述


https://travis-ci.org/pglass/sqlitis.svg?branch=masterhttps://img.shields.io/pypi/v/sqlitis.svghttps://img.shields.io/pypi/pyversions/sqlitis.svg

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}$
    • []喜欢
    • []限制/偏移量
    • []按
  • []插入
  • []更新
  • []删除

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本