在我目前的工作中,我们通过 Java 使用 iBATIS 来 CRUD 我们的数据库。 我喜欢该工具的抽象品质,尤其是在使用遗留数据库时,因为它不会将自己的语法强加给您。
我正在寻找与此库类似的 Python ,因为该网站仅提供 Java/.NET/Ruby 版本。 如果不需要,我不想切换到 Jython。
还有其他类似 Python 的 iBATIS 功能的项目吗?
iBatis 将 SQL DML(或 SQL 的定义)隔离在 XML 文件中。 它特别关注 SQL 和其他地方定义的某些对象模型之间的映射。
SQL Alchemy 可以做到这一点——但它并不是一个真正非常完整的解决方案。 与 iBatis 一样,您只能拥有 SQL 表定义以及表与 Python 类定义之间的映射。
更完整的是拥有一个类定义,它也是 SQL 数据库定义。 如果类定义生成 SQL 表 DDL 以及查询和处理 DML,那就更完整了。
我在 SQLAlchemy 和 Django ORM 之间反复切换。 SQLAlchemy 可以以类似于 iBatis 的方式使用。 但我更喜欢以对象设计为中心,并让工具集从对象派生 SQL 实现。
我将 SQLAlchemy 用于大型、批量、独立项目。 DB 加载、模式转换、DW 报告等效果良好。 在这些项目中,重点是数据的关系视图,而不是对象模型。 例如,生成的 SQL 可以移至 PL/SQL 存储过程中。
我将 Django 用于 Web 应用程序,利用其内置的 ORM 功能。 您可以通过一些工作将 Django ORM 与 Django 环境的其余部分隔离。 您可以提供全局设置将您的应用程序绑定到特定数据库,而无需使用单独的设置模块。
Django 包含许多常见关系(外键、多对多、一对一),它可以管理 SQL 实现。 它为附加数据库生成键和索引定义。
如果您的问题主要是面向对象的,并且使用数据库进行持久化,那么 Django 近乎透明的 ORM 层具有优势。
如果您的问题很大程度上与 SQL 处理中心相关,那么在 SQLAlchemy 中查看生成的 SQL 的能力具有优势。
也许 SQLAlchemy SQL 表达式支持是合适的。请参阅文档。
我写了一个开源软件,名为“mybatis-py”,托管在github上,地址是mybatis。也许它可以帮助你。