用sql编写sql

sql的Python项目详细描述


sqly

sql是一种非常棒的语言,是世界上最成功的编程语言之一。我们应该使用它,而不是试图用定制的dsl来取代它。

然而,在构造sql查询时,有两件事是很好的帮助:

  • dialect-aware-safe-value-substitution:每个数据库接口都有自己的语法来安全替换值(不允许sql注入)-例如,$1?:varname。它们对sql+values参数列表的格式也有不同的要求。我希望能够使用相同的值替换语法编写查询,而不管我使用的是哪一个数据库接口,并且知道sql将正确地为我的接口输出,并且这些值将安全地传递到数据库引擎。
  • dynamic attributes:在许多应用程序中,我事先不知道要选择、插入、更新或筛选哪些属性。我想选择一个给定的属性列表,或者过滤一个给定的键/值映射,或者更新或插入特定的属性,而不必重写sql查询。
  • 块组合:有些sql查询非常复杂。我希望能够将SQL块组合成更大的查询,这样我就可以有效地管理这种复杂性。(大多数数据库查询dsl无法处理复杂的查询,或者他们发明了一种难以学习的语言来编写这些查询。学习sql可以更好地利用我们的时间,但是有助于管理/操作查询中的不同块。)

sqly:

  • 一个类SQL,有一个字段query,还有一个方法.render,它接受一个可选参数dialect
  • 动态值替换,用支持的方言之一呈现:postgres($1)、sqlalchemy(:varname)、embedded(:varname)、mysql(%(varname)s)、sqlite(?)。默认样式是embedded/:varname
  • SELECTWHEREINSERTUPDATE语法中的动态属性/值列表
  • 块组成

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

推荐PyPI第三方库


热门话题
java如何测试JUnit中是否使用常量?   java JMC飞行记录强制完整GC吗?   验证java这种处理客户机/服务器散列密码的技术可以吗?   java建模两个相同但功能不同的对象的好方法是什么?   java i++i的价值是什么?   java的方法区域和堆栈区域   java故障保护:是否可以使用它执行函数<T,R>?   java ArrayIndexOutOfBoundsException嵌套循环if语句   java我无法连接布局。它们不会在Android Studio中显示   java如何在SpringMVC中从用户输入创建新的url   java我的SQL语句有什么问题?无法插入NULL   java Spring MVC主目录404错误Intellij Idea   java如何在ubuntu中部署play框架项目?   本机JNIC代码中的java Openssl同步   java从中读取文本。db文件一次一行