Python的ORM框架SQLObject 1.1.3發(fā)布
SQLObject 1.1.3 發(fā)布了,該版本修復了使用 PostgreSQL 的一個bug(SET client_encoding查詢增加引號的問題)。
SQLObject 是一個流行的Python數(shù)據(jù)庫對象映射框架,映射的規(guī)則就是表->類、字段->屬性
示例代碼:
- >>> from sqlobject import *
 - >>>
 - >>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:')
 - >>>
 - >>> class Person(SQLObject):
 - ... fname = StringCol()
 - ... mi = StringCol(length=1, default=None)
 - ... lname = StringCol()
 - ...
 - >>> Person.createTable()
 
使用SQLObject連接數(shù)據(jù)庫與Python
向(大多數(shù))編寫SQL說再見
當面向對象編程范例滿足大多數(shù)數(shù)據(jù)庫的關系范例時,通常會看到對象關系映射。對象關系映射是這兩個世界的橋梁。它允許您定義與數(shù)據(jù)庫表對應的類。然后您可以使用這些類及其實例上的方法來與數(shù)據(jù)庫交互,而不用編寫 SQL。使用對象關系映射并不意味著不需要知道關系數(shù)據(jù)庫如何工作,而是不必要編寫 SQL,從而避免編程錯誤。
您可以找到一打以上的操作 SQL 數(shù)據(jù)庫的開放源碼 Python 包,這還沒包括用于連接 Python 與特定數(shù)據(jù)庫的特殊用途模塊。SQLObject 是其中最好的模塊。它是簡單易用的完全對象關系映射包。SQLObject 幾乎可以完成編程數(shù)據(jù)庫所需的所有操作。
關于 SQLObject 限制
SQLObject 想讓您用面向對象的方式而非關系方式進行思考。這有利于您的理解和您的編程生產(chǎn)率,但不利于性能。畢竟,數(shù)據(jù)庫仍是關系型的。如何標記呼叫過的每個電話號碼?使用 SQL,您將使用單個 UPDATE 命令。使用 SQLObject,您需要迭代通過整個結果集,并修改每個對象的 last_call 成員,這是非常低效的。
SQLObject 為開發(fā)人員時間犧牲了處理器時間。這通常是好的交易,但甚至在簡單的應用程序中,您也可能需要下降一個級別到達 Python 數(shù)據(jù)庫接口,為一些關鍵路徑的操作編寫原始 SQL。
【編輯推薦】















 
 
 
 
 
 
 