当前位置: 首页 > 工具软件 > Pony ORM > 使用案例 >

Python ORM框架Pony —— 什么是Pony ORM?

苏晓博
2023-12-01

Pony是一种高级的对象关系映射器。ORM允许开发人员以对象的形式处理数据库的内容。关系数据库包含存储在表中的行。但是,当使用高级面向对象语言编写程序时,可以以对象的形式访问从数据库检索的数据,这样十分方便。Pony ORM是一个Python语言库,允许您方便地处理在关系数据库中存储为行的对象。

在Python中实现了其他常用的的映射器,如Django和SQLAlchemy,但是Pony的优势在于:

  • 可以编写非常方便的查询语法
  • 自动化查询的优化
  • N + 1问题的优雅解决方案
  • 在线数据库模式编辑器

与Django相比,Pony提供:

  • 标识映射模式
  • 自动事务管理
  • 自动缓存查询和对象
  • 完全支持复合键
  • 使用LEFT JOIN,HAVING和SQL的其他功能轻松编写查询的能力

Pony有一个有趣的特性,它允许使用生成器表达式或lambda函数使用python的语法与数据库进行交互,然后将其转换为SQL。即使不是数据库专家,这些查询也可以由熟悉Python的开发人员轻松编写。以下是使用生成器表达式语法的查询示例:

select(c for c in Customer if sum(c.orders.total_price) > 1000)

这是使用lambda函数编写的相同查询:

Customer.select(lambda c: sum(c.orders.total_price) > 1000)

在此查询中,我们检索总购买量超过1000的所有客户。对数据库的查询以Python生成器表达式的语法进行编写,并作为参数传递给select()函数,而Pony不同的是Pony不执行此生成器,而是将其转换为SQL语句,然后发送到数据库。使用这种方法,任何开发人员都可以编写数据库查询而无需SQL专家。

Customer是一个实体类,最初在创建应用程序时进行描述,并链接到数据库中的表。

并非每个ORM(对象关系映射器)都提供这种方便的查询语法。除了易于使用之外,Pony还可确保高效地处理数据。查询被转换为快速且可执行的SQL语句。根据DBMS(数据库管理系统),生成SQL的语法可能会有所不同,以便使用所选数据库的功能。无论DBMS如何,用Python编写的查询代码看起来都是一样的,这确保了应用程序的可移植性。

使用Pony,任何开发人员都可以编写复杂而有效的查询,即使不是SQL专家也是如此。与此同时,Pony不与SQL“fight” - 如果开发人员需要在原始SQL中编写查询,例如调用存储过程,我们都可以轻松地使用Pony执行此操作。Pony ORM的主要目标是简化Web应用程序的开发过程。

从版本0.7开始,Pony ORM是在Apache License 2.0版下发布的。

 

如果有需要学习Pony请点击这里https://docs.ponyorm.com/index.html

 

 类似资料: