从文档化的sql代码生成应用程序构件
voxsql的Python项目详细描述
voxsql
从记录的sql代码生成应用程序工件。
用例
此库的用例包括但不限于:
- 自动生成人性化的sql摘录文档。
- 自动生成应用程序级绑定(Learn more)。
- 测试代码的检测,以将覆盖率分析扩展到sql摘录。
开始
pip install voxsql
基本概念
voxsql
处理带注释的sql文件。注释是以类似javadoc的注释的形式提供的,库在分析文件时只考虑结构正确的sql段。下面是一个示例:
/** * Adds a contact to the database. * * @dialect postgresql * @name add_contact * @param contact_name: string - the target contact's name * @retmode record * @retval name: string */{insertintocontacts(name)values(%(contact_name)s)returningname;}
将上面的代码片段保存到sample.sql
以运行下面的示例。
cli用法
要使用cli消化上面的sql文件:
voxsql sample.sql
有关详细信息,请运行voxsql --help
。
直接使用库
下面是一个例子,说明如何直接使用python库操作上面的文件:
fromvoxsqlimportparseframes=parse(open('sample.sql').read())assertframes[0].header.name=='add_contact'assertframes[0].body.source.startswith('insert into contacts')
设计目标和灵感
voxsql
努力将sql提升为以应用程序为中心的项目中的一流语言。
与orms相反,voxsql
不尝试将sql封装在更高级别的应用程序级抽象中,也不尝试重写或调整提供的sql以提高可移植性。这里的前提是直接编写和维护SQL代码具有一些有趣的优点,例如使用更高级的SQL特征的更低的障碍,更容易检查查询,以及减少应用程序占用和复杂性的可能性。假定^ {CD1}}以灵活性为代价促进简单性是合理的。
SQL繁重设计的一些常见缺点,如缺乏查询组合性、难以促进代码重用和缺乏跨引擎可移植性,并不是voxsql
的重点,因此,它被认为不适合真正需要支持不可预知的复杂持久层的项目,这可能不像现在常识所认为的那样代表当前的现实。
以下是一些以稍微不同的方式促进SQL for应用程序开发的项目:
下面列出的参考资料对voxsql
:
- Mastering PostgreSQL In Application Development,作者:迪米特里·方丹。
贡献
这就是您在本地运行测试的方式:
make test.start.d pytest
路线图
- 通过新的
@error
标记自动处理异常。 - 添加对
@dialect sqlite
的支持
- 添加对
@dialect mysql
的支持
- 添加对
@dialect xyz:version
的支持
- 添加Sphinx文档
- 添加cli命令,以便在预加载绑定的情况下清理解释器。