- 論壇徽章:
- 1
|
根據(jù)web.py官網(wǎng)上的todo list的例子,進(jìn)行實(shí)際測(cè)試,并嘗試使用不同的數(shù)據(jù)庫,在這里與大家分享。
apache+wsgi主要是考慮到以后到生產(chǎn)環(huán)境中,使用oracle數(shù)據(jù)庫是不大喜歡java,一直想用python的訪存oracle數(shù)據(jù)庫。
web.py學(xué)習(xí)的資料相對(duì)太少,前后折騰了20來天(工作空隙),才算上手,整個(gè)過程很艱難,一句一句注釋掉,步步為營(yíng),查錯(cuò),找原因。
主要就是apache+wsgi環(huán)境中,出錯(cuò)信息太少,找不到原因,后來熱心的thinkc給出了查看apache日志的方法,查找出錯(cuò)原因,進(jìn)度大大加快。
困擾的問題有:
1. webpy連接遠(yuǎn)程數(shù)據(jù)庫的問題,
解決方法是增加host參數(shù),如下:
db = web.database(dbn='postgres', db='postgres', user='postgres', pw='123456',host="127.0.0.1")
只是對(duì)mysql,pgsql有效,在oracle就不行。需要這樣來寫。
db = web.database(dbn='oracle', db='127.0.0.1/ORCL', user='system', pw='Mz123456')
2.oracle和pgsql數(shù)據(jù)庫,字段名大小寫的問題。
一樣的create table todo (id...,title...),在webpy的程序中,oracle字段名不知為什么只能用大寫,
用小寫會(huì)出錯(cuò),提示id或title字段找不到,必須是ID,TITLE字段。需要修改模板index.html和model.py
在使用pgsql數(shù)據(jù)庫時(shí),又出現(xiàn)相反的情況。不能用大寫,要小寫,改回來吧。奇了怪了!
3.字符集問題
亂碼問題一直讓我很恐懼,不幸的事,它總是如影隨形。
解決辦法:
(1).加入下面三行
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
這三條,按網(wǎng)友的提示,解決編碼轉(zhuǎn)換的問題。
(2).在base.html模板文件中,加入
<META http-equiv=Content-Type content="text/html; charset=utf-8">
指令頁面編碼
(3).但oracle數(shù)據(jù)庫中讀出的記錄仍然是一個(gè)?號(hào),是亂碼,根據(jù)以前寫mod_python的經(jīng)驗(yàn),加入兩條,
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
4.雜七雜八的路徑問題
python code.py http://127.0.0.1:8080 正常,
到了apache+wsgi中,出現(xiàn)文件,模塊找不到的問題。
添加下面一行,解決
sys.path.append('D:/wwwroot/webpy')
python code.py 啟動(dòng)web服務(wù),http://127.0.0.1:8080 中,可以顯示出錯(cuò)的信息。
apache+wsgi環(huán)境中,瀏覽器中,則出錯(cuò)的信息太少,查錯(cuò)需要打開error.log日志。
web.py官網(wǎng)給出了很多例子,非常好,但實(shí)際一試,才會(huì)發(fā)現(xiàn),并不是拿來就可以用,需要讀懂程序,需要有查錯(cuò)的本事。
走過了艱難的一段過程,希望后來的朋友少走彎路,在這里與大家分享一點(diǎn)小經(jīng)驗(yàn),祝大家新年快樂。
文件列表:
ware\cx_Oracle-5.1.2-10g.win32-py2.7.msi
\cx_Oracle-5.1.2-11g.win32-py2.7.msi
\mod_wsgi-win32-ap22py27-3.3.so
\psycopg2-2.4.5.win32-py2.7-pg9.1.3-release
兩個(gè)todo list的例子:
webpy-todolist-oracle.zip
webpy-todolist-pgsql.zip
python 選擇的是2.7.2版
cx_Oracle提供了兩個(gè),一個(gè)是針對(duì)oracle 10g,一個(gè)針對(duì)的11g。
psycopg2與之配對(duì)的是postgresql數(shù)據(jù)庫,9.1以上版本。python 2.7版。
Apache2.2和Postgresql 9.2自己下載安裝。
安裝好cx_Oracle以后,還需要下載安裝instantclient-basic。
Linux環(huán)境可以下載rpm包進(jìn)行安裝。
windows環(huán)境解壓后,復(fù)制到C:\Python27\Lib\site-packages即可。
關(guān)于webpy應(yīng)用的使用環(huán)境:
比如,在windows環(huán)境下,d:\wwwroot\webpy作為根目錄。
可以用命令行 cmd, 然后切換到d盤,用cd命令進(jìn)入到webpy目錄。
然后python code.py
通常 http://127.0.0.1:8080即可使用。
使用apache+wsgi的話,將mod_wsgi.so(改名后)復(fù)制到apache的module目錄,
然后,在httpd.conf配置文件最下面添加幾行。
#以下為webpy添加的內(nèi)容
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / "D:/wwwroot/webpy/code.py"
Alias /static "D:/wwwroot/webpy/static/"
AddType text/html .py
<Directory "D:/wwwroot/webpy">
Order deny,allow
Allow from all
</Directory>
然后,重新啟動(dòng)apache服務(wù),即可 http://127.0.0.1 使用。
兩個(gè)例子中,有sql文件,可以用數(shù)據(jù)庫終端軟件運(yùn)行,初始化建立todo這張表。
使用過程:
1.安裝apache
2.python
3.安裝數(shù)據(jù)庫 pgsql,oracle
4.安裝pscopg
5.cx_Oracle
6.instantclient-basic,
7.安裝webpy python setup.py insall
8.配置apache的 httpd.conf文件
9.初始化數(shù)據(jù)庫
10.打開瀏覽器使用
這兩個(gè)例子可以逐個(gè)試驗(yàn),code.py文件位于d:\wwwroot\webpy目錄中。
如果在其它目錄,需要修改程序中的這一行:
sys.path.append('D:/wwwroot/webpy')
還需要修改apache的httpd.conf配置。
再次祝大家新年快樂!
完整的例子及相關(guān)軟件:
webpy-todolist-eg2.zip
(1.14 MB, 下載次數(shù): 40)
2013-02-06 10:37 上傳
點(diǎn)擊文件名下載附件
|
|