SQLObject 1.1.3 发布了,该版本修复了使用 PostgreSQL 的一个bug(SET client_encoding查询增加引号的问题)。
SQLObject 是一个流行的Python数据库对象映射框架,映射的规则就是表->类、字段->属性
示例代码:
- >>> from sqlobject import *
- >>>
- >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:')
- >>>
- >>> class Person(SQLObject):
- ... fname = StringCol()
- ... mi = StringCol(length=1, default=None)
- ... lname = StringCol()
- ...
- >>> Person.createTable()
使用SQLObject连接数据库与Python
向(大多数)编写SQL说再见
当面向对象编程范例满足大多数数据库的关系范例时,通常会看到对象关系映射。对象关系映射是这两个世界的桥梁。它允许您定义与数据库表对应的类。然后您可以使用这些类及其实例上的方法来与数据库交互,而不用编写 SQL。使用对象关系映射并不意味着不需要知道关系数据库如何工作,而是不必要编写 SQL,从而避免编程错误。
您可以找到一打以上的操作 SQL 数据库的开放源码 Python 包,这还没包括用于连接 Python 与特定数据库的特殊用途模块。SQLObject 是其中最好的模块。它是简单易用的完全对象关系映射包。SQLObject 几乎可以完成编程数据库所需的所有操作。
关于 SQLObject 限制
SQLObject 想让您用面向对象的方式而非关系方式进行思考。这有利于您的理解和您的编程生产率,但不利于性能。毕竟,数据库仍是关系型的。如何标记呼叫过的每个电话号码?使用 SQL,您将使用单个 UPDATE 命令。使用 SQLObject,您需要迭代通过整个结果集,并修改每个对象的 last_call 成员,这是非常低效的。
SQLObject 为开发人员时间牺牲了处理器时间。这通常是好的交易,但甚至在简单的应用程序中,您也可能需要下降一个级别到达 Python 数据库接口,为一些关键路径的操作编写原始 SQL。
【编辑推荐】