Python的ORM框架SQLObject 1.1.3發布
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。
【編輯推薦】