sqloose是一种不那么严格的sql,它允许范围和负索引。
sqloose的Python项目详细描述
sqloose是一种类似sql的查询语言,它直接映射到sql。此模块不实现 数据库本身,但它是从sqloose到sql的转换程序。
安装
pip安装python sqloose
用法
fromsqlooseimportsqloosesql=sqloose.to_sql("SELECT age, race, gender, count(*) AS num FROM stats GROUP BY [1:3] ORDER BY -1 DESC")
用例
sqloose被设计成一个不那么僵硬的sql,提供了一个更方便的语法。尤其是 允许在GROUP BY和ORDER BY语句中使用范围和负索引。正确的索引 在该范围内指定最终项,这与python不同,python的最终项是正确的索引+ 一。
使用以下SQL语句:
SELECTage,race,gender,count(*)ASnumFROMstatsGROUPBY1,2,3ORDERBY4DESC
在sqloose中,这可以用多种方式表示,例如:
SELECTage,race,gender,count(*)ASnumFROMstatsGROUPBY[1:3]ORDERBY-1DESCSELECTage,race,gender,count(*)ASnumFROMstatsGROUPBY[:3]ORDERBY-1DESCSELECTage,race,gender,count(*)ASnumFROMstatsGROUPBY[:-2]ORDERBY-1DESC
此外,sqloose定义了group to和group through结构,可以在同一个 情景:
SELECTage,race,gender,count(*)ASnumFROMstatsGROUPTO-1ORDERBY-1DESCSELECTage,race,gender,count(*)ASnumFROMstatsGROUPTO4ORDERBY-1DESCSELECTage,race,gender,count(*)ASnumFROMstatsGROUPTHROUGH3ORDERBY-1DESC
sql通常以交互方式使用,在这种方式中,数据是被探索的,而不是简单地被 聚集。查询是被发现的,而不是天生就知道的。这种模式通常包括 查看聚合(计数、总和、平均值),同时更改列的选择和 深入挖掘最有意义的见解。使用这种模式的失败之处在于 必须更改查询的开始(列列表)和接近结束(分组索引)。 通过扩展sql语法使之更具表现力,这在很大程度上是不必要的。
sqloose不会验证sql的正确性,但会验证 特定于sqloose的构造,包括group to和group的范围和用法 通过。
0.1.0A1(2016-09-25)
- github上的第一个预发行版。