Python的ORM框架SQLObject 1.1.3發(fā)布
SQLObject 1.1.3 發(fā)布了,該版本修復(fù)了使用 PostgreSQL 的一個(gè)bug(SET client_encoding查詢增加引號的問題)。
SQLObject 是一個(gè)流行的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說再見
當(dāng)面向?qū)ο缶幊谭独凉M足大多數(shù)數(shù)據(jù)庫的關(guān)系范例時(shí),通常會(huì)看到對象關(guān)系映射。對象關(guān)系映射是這兩個(gè)世界的橋梁。它允許您定義與數(shù)據(jù)庫表對應(yīng)的類。然后您可以使用這些類及其實(shí)例上的方法來與數(shù)據(jù)庫交互,而不用編寫 SQL。使用對象關(guān)系映射并不意味著不需要知道關(guān)系數(shù)據(jù)庫如何工作,而是不必要編寫 SQL,從而避免編程錯(cuò)誤。
您可以找到一打以上的操作 SQL 數(shù)據(jù)庫的開放源碼 Python 包,這還沒包括用于連接 Python 與特定數(shù)據(jù)庫的特殊用途模塊。SQLObject 是其中最好的模塊。它是簡單易用的完全對象關(guān)系映射包。SQLObject 幾乎可以完成編程數(shù)據(jù)庫所需的所有操作。
關(guān)于 SQLObject 限制
SQLObject 想讓您用面向?qū)ο蟮姆绞蕉顷P(guān)系方式進(jìn)行思考。這有利于您的理解和您的編程生產(chǎn)率,但不利于性能。畢竟,數(shù)據(jù)庫仍是關(guān)系型的。如何標(biāo)記呼叫過的每個(gè)電話號碼?使用 SQL,您將使用單個(gè) UPDATE 命令。使用 SQLObject,您需要迭代通過整個(gè)結(jié)果集,并修改每個(gè)對象的 last_call 成員,這是非常低效的。
SQLObject 為開發(fā)人員時(shí)間犧牲了處理器時(shí)間。這通常是好的交易,但甚至在簡單的應(yīng)用程序中,您也可能需要下降一個(gè)級別到達(dá) Python 數(shù)據(jù)庫接口,為一些關(guān)鍵路徑的操作編寫原始 SQL。
【編輯推薦】