与restapi结合使用的sql查询构建规范及其peewee实现。

querybuilder的Python项目详细描述


下表示例:

CREATETABLEarticle(idintegerNOTNULL,createdtimestampwithouttimezoneNOTNULL,titlecharactervarying(255)NOTNULL,type_idintegerNOTNULL,topic_idintegerNOTNULL,author_idsinteger[]NOTNULL,category_idsinteger[],tagscharactervarying(255)[],keywordscharactervarying(255)[],summarytext,contenttextNOTNULL,coverjsonbNOTNULL,editors_pickbooleanNOTNULL,pageviewsbigintNOTNULL,updatedtimestampwithouttimezoneNOTNULL,publishedtimestampwithouttimezone,permalinkcharactervarying(255),cust_metajsonb);

规格

  • 对于type_id等于1type_id = 1)的所有项目: json    {   "EQ": {      "type_id": 1   }    }相同的结构是 收件人:
ConditionJSON KEYSymbolJSON Query
Less thanLT<^{tt5}$
Less than or Equal toLE<=^{tt6}$
Greater thanGT>^{tt7}$
Greater than or Equal toGE>=^{tt8}$
Not equalNE!=^{tt9}$

对于type_id位于[1, 2, 3]中的所有项目,json查询 将是:

{"IN":{"pageviews":[1,2,3]}}

介于

对于所有pageviews介于10000和15000之间的项目,json 查询将是:

{"BETWEEN":{"pageviews":[10000,15000]}}

包含任何

对于author_ids包含8, 9, 10中任何一个的所有项目, json查询将是:

{"CONTAINS_ANY":{"author_ids":[8,9,10]}}

包含所有

对于author_ids包含所有8, 9的所有项目,json 查询将是:

{"CONTAINS_ALL":{"author_ids":[8,9]}}

开始
  • 对于以Film Review开头的title的所有文章, json查询将是:

    {"STARTSWITH":{"title":"Film Review"}}

复杂查询

  • 复杂查询可以包含OR或^{tt20}的嵌套结构$ 或者两者都有。

对于pageviews介于10000和15000之间且其 author_ids包含8(作者的ID)(在上面的架构中, author_ids是postgres中的arrayfield,json查询将是:

{"AND":[{"BETWEEN":{"pageviews":[10000,15000]}},{"CONTAINS":{"author_ids":[8]}}]}

要求
  • 如果只有一个条件,如pageviews>;100,则查询 可以直接将最外面的键包含为 EQ, NE, GT, GE, LT, LE, STARTSWITH, CONTAINS, CONTAINS_ALL, CONTAINS_ANY, BETWEEN

示例:

{"STARTSWITH":{"title":"Film Review"}}
  • 但如果涉及到更多的条件,最外层的密钥必须是 或

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

推荐PyPI第三方库


热门话题
java如何使用lambda/java8迭代递归列表   不带根元素的java Thymeleaf“foreach”   java Android会话管理不工作   java IOUtils。toByteArray已弃用,我们可以使用什么替代?   Java网络程序;(滞后问题)   没有自然密钥时equals()和hashCode()的java实现?   java如何在一个类中使用静态对象,以及如何在另一个类中继承静态对象   摆动改变Java屏幕分辨率   java如何将DSL语法转换为脚本语法   java使用maven将storm和cassandra打包到可执行的jar中   java GridView在notifyDataSetChanged()之后变为空白   java在Dozer映射中将接口用作源   java getLocalCertificates()返回null   java为OKhttp URL请求类型传递多个URL   java中基于字符串的表达式求值