Zope訪問關系數據庫(1)

發表于:2007-06-11來源:作者:點擊數: 標簽:
Zope使用一個對象數據庫存儲Zope對象。Oracle,Sybase,PostgreSQL等關系數據庫使用一種不同的方法存儲數據。關系數據庫的數據存儲在數據表中。表中的數據以“行”來存儲。表的列組稱為模式。標準查詢語言SQL用來查找、修改關系數據庫中的數據。 Zope不是用這

Zope使用一個對象數據庫存儲Zope對象。Oracle,Sybase,PostgreSQL等關系數據庫使用一種不同的方法存儲數據。關系數據庫的數據存儲在數據表中。表中的數據以“行”來存儲。表的列組稱為模式。標準查詢語言SQL用來查找、修改關系數據庫中的數據。

Zope不是用這種方法來存儲數據的。Zope的對象數據庫接受彼此有種種關系的許多對象。關系數據存儲于非常簡單的表格之中,不易映射到對象上去。Zope提供了幾種在Zope對象世界中訪問關系數據的途徑,本文下面將詳細介紹“數據庫接口”(Database Adapter)和"SQL方法"。

Zope關系數據庫支持最普通的應用就是操作網絡數據。例如:假定你的人力資源部門管理員工數據,這個數據庫提供了一些工具供管理員生成報表、修改數據。然而,對于員工查看、簡單管理自己的數據卻很困難。如果他的住址變更了,他沒有辦法更改數據庫中自己的地址信息。使用Zope訪問關系數據,你的員工無論在家還是在辦公室,都可以使用任何瀏覽器來查看、修改自己的記錄。

使用Zope訪問關系數據庫,你可以利用Zope的所有特性,比如,安全性、動態表達、聯網工作等等。使用Zope可以有機地將數據訪問、數據表達、數據管理融合在一起。

為了在Zope中使用關系數據,必須建立兩種不同的Zope對象:一是“數據庫連接對象”,另一個是“Z SQL方法”。前者告訴Zope如何連接一個關系數據庫;后者使用前者去連接一個數據庫,并描述了對數據庫的操作。本文將進一步討論這兩種對象。

1 使用數據庫連接對象

數據庫連接對象用來建立和管理對外部數據庫的連接。在創建SQL方法之前必須建立好數據庫連接對象,所有的Z SQL方法都必須和一個數據庫連接對象關聯,Zope提供了下面幾個數據庫接口(Database Adapter,簡稱AD):

Oracle

Oracle是一個廣泛應用、性能優良的商業關系數據庫。它的Zope商業接口由Digital Creations公司編寫提供。Oracle可以從其網站試用、購買。

Sybase

這是一個流行的商業關系數據庫。它的AD由Digital Creations公司編寫提供。Sybase可以從其網站試用、購買。

ODBC

ODBC是一種由眾多商業、開源數據庫支持的跨平臺的數據庫工業標準協議。他的DA由DC公司編寫提供。

PostgreSQL

這個數據庫是開源數據庫的領頭羊。它有多個DA。像ZPoPy,由Zope社區成員Thierry Michel維護。從PostgreSQL的網站可以得到更多關于PostgreSQL的信息。

MySQL

MySQL是一個發展迅速的開源關系數據庫。從其網站可以得到更多的信息。它的DA由Zope社區成員Monty Taylor維護。

Interbase

這是Inprise(Borland)公司的一個開源關系數據庫。在該公司的網站上可以得到此數據庫更多的信息。你可能對維護此數據庫一個分支的社區FireBird感興趣。Zope社區成員Bob Tierney在維護該數據庫的Zope接口。

Gadfly

這個關系數據庫是Aaron Waters用Python寫的。它內置在Zope中,用來做演示或處理小批量的數據。它很快,但是不適用于處理大量數據,因為它把所有的數據都讀入內存來處理??梢栽贑hordate的網站上獲得更多的情況。

除了Gadfly,其它關系數據庫都是Zope的外部擴展。就是說,你的數據庫可以運行在Zope之外的其他機子上。當然,你的Zope要能訪問運行數據庫的主機。安裝、配置關系數據庫超出了本書的范圍。上面提到的關系數據庫都有自己的安裝配置文檔。

因為Gadfly在Zope內運行,你不必為它指定具體的連接信息。其它關系數據庫則要你具體指定如何連接。這種規格成為“連接字符串”,不同數據庫各不相同。

為了從Zope中訪問關系數據庫,你必須下載安裝關系數據庫的特定接口。這些接口可以從Zope.org的Products目錄下載(Gadflyde的接口已經包含在了Zope中)。本章的示例都是使用Gadfly,但處理過程適用于其它關系數據庫。

安裝數據庫接口之后就可以從添加列表中選擇它來創建一個數據庫連接對象了。各個數據庫連接對象都是相似的。從添加列表選擇Z Gadfly Database Connetion會轉入Gadfly數據庫連接對象的添加表單。

選擇Demo數據源,用Gadfly_database_connection作為id,單擊添加按鈕,生成一個Gadfly數據庫連接對象。單擊新建的數據庫連接對象,看到的是它的狀態頁。從本頁可以知道你是否連接到了數據庫(有一個按鈕控制數據庫的連接和斷開)。一般情況下,Zope會自動連接到數據源。某些情況下,你可能想到手工控制數據庫的連接。對Gadfly來說,斷開連接沒有什麼意義,但是對于外部的數據的維護,就有必要手工控制它們的連接。

下一頁是屬性頁,該頁顯示數據源和連接對象的其他一些屬性。當你想把數據源換成另外一個時,就會用到這些屬性。

在測試頁可以測試你的數據庫連接。在該頁,你可以直接輸入SQL語句操作你的數據庫。該頁用來測試數據庫,同時運行SQL語句(比如創建一個表)。此處不宜輸入過多的SQL語句。SQL語句要放在Z SQL方法中,本章后面將作講解。

讓我們在數據庫中創建一個表以便展示本章的例子。測試頁允許直接輸入SQL語句操作數據庫。你可以在測試頁輸入SQL創建數據表而不必使用Z SQL方法。創建名為employees的表使用如下SQL語句:

CREATE TABLE employees

(

emp_id integer,

first varchar,

last varchar,

salary float

)

單擊提交按鈕運行這條SQL語句。Zope會返回一個驗證頁告訴你什麼SQL在運行和可能的結果。

此處運行的SQL會因你的數據庫不同而各異。數據庫建表的確切語句,請參考數據庫提供商的文檔。

此處的SQL語句將在Gadfly數據庫中新建一個名為employees的表。該表有四列:emp_di,first,last, salary。第一列是員工的id,這是標志員工的唯一號碼。接著的兩列類型是varchar,該類型和字符串類似。salary列的類型是float,即浮點數。不同的數據庫提供不同的數據類型,參考相關文檔查看你的數據庫支持的數據類型。

為了保證員工號是唯一的,需要為表創建一個索引。在測試頁輸入下面的SQL語句:

CREATE UNIQUE INDEX emp_id ON employees

(

emp_id

)

現在你有了一個表并且創建了一個索引,要驗證你的表,轉到瀏覽頁。該頁顯示了數據庫的表和它們的模式。在這里,你可以看到一個employees 表。假如點擊了前邊的“加號”,該表會展開,顯示出四列:emp_id,first,last,salary。

當創建多表復雜SQL應用時,這是非常有用的——各表的結構一目了然。當然不是所有的數據庫都支持表的瀏覽。

你已經建立了一個數據庫連接對象并且新建了一個表,接下來就可以創建Z SQL方法來操作你的數據了。


共4頁: 1 [2] [3] [4] 下一頁

原文轉自:http://www.anti-gravitydesign.com

...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97