資源描述:
《訪問關(guān)系數(shù)據(jù)庫(kù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、訪問關(guān)系數(shù)據(jù)庫(kù)雖然Zope自帶的ZODB對(duì)象數(shù)據(jù)庫(kù)在Zope中的應(yīng)用是最合適的,但很明顯,關(guān)系數(shù)據(jù)庫(kù)仍然在這個(gè)世界中占據(jù)著統(tǒng)治地位??赡苣闼诘腎T環(huán)境中早已部署了關(guān)系數(shù)據(jù)庫(kù),在這個(gè)現(xiàn)有的環(huán)境中部署Zope/Plone時(shí),你需要讓它們可以協(xié)同工作,讓Zope/Plone可以讀取現(xiàn)有的關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù),讓Zope/Plone把數(shù)據(jù)寫入到關(guān)系數(shù)據(jù)庫(kù)中以便其它支持?jǐn)?shù)據(jù)庫(kù)的程序也能讀到這些數(shù)據(jù),這一章正是針對(duì)系統(tǒng)管理員和網(wǎng)站管理員會(huì)遇到的這種集成需求而編寫的。為了在Zope中使用關(guān)系數(shù)據(jù),必須建立兩種不同的Zope對(duì)象:一個(gè)是“數(shù)據(jù)庫(kù)連接對(duì)象”,另一個(gè)是
2、“ZSQL方法”。前者告訴Zope如何連接一個(gè)關(guān)系數(shù)據(jù)庫(kù);后者使用前者去連接一個(gè)數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)的進(jìn)行SQL訪問。本章學(xué)習(xí)重點(diǎn)是:·了解Zope與各種關(guān)系數(shù)據(jù)庫(kù)連接的原理,并掌握連接的方法·熟練使用ZSQL方法進(jìn)行以關(guān)系數(shù)據(jù)庫(kù)為存儲(chǔ)方案的應(yīng)用開發(fā)·掌握在腳本或模板中等各種調(diào)用ZSQL的方法14.1???關(guān)系數(shù)據(jù)庫(kù)連接一般應(yīng)用程序使用關(guān)系數(shù)據(jù)庫(kù),比如需要以關(guān)系數(shù)據(jù)庫(kù)作為數(shù)據(jù)存儲(chǔ)等,它們需要使用關(guān)系數(shù)據(jù)庫(kù)所提供的相應(yīng)編程語(yǔ)言的開發(fā)接口。Zope也不例外,在連接關(guān)系庫(kù)時(shí)它就是一個(gè)關(guān)系數(shù)據(jù)庫(kù)的訪問客戶端,因此需要相應(yīng)關(guān)系數(shù)據(jù)庫(kù)的開發(fā)接口。所不同的是Zope
3、是以Python為編程語(yǔ)言寫出的應(yīng)用程序,所需連接數(shù)據(jù)庫(kù)的接口也必須是Python的。除了訪問接口,還必須學(xué)習(xí)的一件事就是連接字符串,不管你使用哪種編程語(yǔ)言來訪問關(guān)系數(shù)據(jù)庫(kù),都需要一種方法來描述所連接的關(guān)系數(shù)據(jù)庫(kù)的信息,如連接哪一臺(tái)機(jī)器上的關(guān)系數(shù)據(jù)庫(kù)中的哪一個(gè)數(shù)據(jù)庫(kù),使用什么用戶名和密碼等,這在Zope中稱為"連接字符串"。14.1.1???數(shù)據(jù)庫(kù)適配器(DA)Zope支持現(xiàn)有的很多種關(guān)系數(shù)據(jù)庫(kù),如商業(yè)的Oracle、DB2、SQLSever、InterBase等,還有開源實(shí)現(xiàn)的PostgreSQL、MySQL等,還有一種是Zope自帶的以Pyth
4、on語(yǔ)言實(shí)現(xiàn)的Gadfly關(guān)系數(shù)據(jù)庫(kù)。Zope使用稱為數(shù)據(jù)庫(kù)適配器(DatabaseAdapter)的對(duì)象作為與實(shí)際的關(guān)系數(shù)據(jù)庫(kù)的接口,不同的關(guān)系數(shù)據(jù)庫(kù)有不同的連接適配器,為了從Zope中訪問關(guān)系數(shù)據(jù)庫(kù),你需要下載安裝相應(yīng)的數(shù)據(jù)庫(kù)連接適配器產(chǎn)品。同時(shí)還因?yàn)檫B接適配器產(chǎn)品就是給關(guān)系數(shù)據(jù)庫(kù)和Zope之間建立一座橋梁,它的內(nèi)部是直接使用這個(gè)關(guān)系數(shù)據(jù)庫(kù)的Python編程訪問接口,你還需要給Python安裝與你要連接的數(shù)據(jù)庫(kù)相應(yīng)的Python訪問接口。一般在數(shù)據(jù)庫(kù)軟件供應(yīng)商的網(wǎng)站上可以下載到相應(yīng)的Python訪問接口軟件包?!颈?4.1】常用的關(guān)系數(shù)據(jù)庫(kù)所需
5、的連接適配器產(chǎn)品關(guān)系數(shù)據(jù)庫(kù)名稱可用的適配器產(chǎn)品說明Oracle由Zope公司提供的DCOracle2包包含了ZoracleDADB2由BlueDynamics提供的ZDB2DAPostgreSQL最新的數(shù)據(jù)庫(kù)連接適配器是包含于psycopg包中的ZPsycopgDA,原來的ZpopyDA也可以使用MySQL使用ZMySQLDA,源代碼形式和linux二進(jìn)制包形式都可用SAPDB由UlrichEck提供的ZsapdbDASybase由Zope公司編寫并提供商業(yè)支持的SybaseDASQLServer由Zope公司編寫并提供商業(yè)支持的ZODBCDA,只
6、有Windows平臺(tái)可用。這個(gè)數(shù)據(jù)庫(kù)適配器也支持其它的ODBC兼容的數(shù)據(jù)庫(kù)。Interbase/Firebird有多個(gè)數(shù)據(jù)庫(kù)適配器可用,包括isectZope,kinterbasdbDA和gvibDAInformix有ZinformixDA產(chǎn)品,這個(gè)產(chǎn)品依賴于informixdb產(chǎn)品也需要安裝GadflyGadfly數(shù)據(jù)庫(kù)適配器已內(nèi)置于Zope中上表中所列出的只是一些最常用的關(guān)系數(shù)據(jù)庫(kù),并且在Zope網(wǎng)站上已有很多人貢獻(xiàn)的數(shù)據(jù)庫(kù)連接適配器產(chǎn)品。即使某種數(shù)據(jù)庫(kù)尚沒有相應(yīng)的數(shù)據(jù)庫(kù)連接適配器,只要它有相應(yīng)的Python語(yǔ)言編程接口也很容易將這種適配器寫出
7、來。提示(在http://www.zope.org上可以看到Download下面有ZopeProducts,這里可以下載各種形式的Zope擴(kuò)展產(chǎn)品,所有數(shù)據(jù)庫(kù)操縱方面的產(chǎn)品都在稱為"外部訪問(ExternalAccess)"的類型中,你也可以直接訪問這個(gè)地址:http://www.zope.org/Products/external_access。)另一方面,還有像ODBC這樣的由眾多商業(yè)、開源數(shù)據(jù)庫(kù)支持的跨平臺(tái)的數(shù)據(jù)庫(kù)工業(yè)標(biāo)準(zhǔn)協(xié)議也被Zope所支持,也就是說即使你使用的數(shù)據(jù)庫(kù)沒有相應(yīng)的Zope上的連接適配器,但只要它是支持ODBC標(biāo)準(zhǔn)的,那么也可
8、以使用ODBC連接適配器來連接你的關(guān)系數(shù)據(jù)庫(kù)。值得一提的是這個(gè)Gadfly關(guān)系數(shù)據(jù)庫(kù)是用Python編寫的。它內(nèi)置在Zop