用python寫(xiě)asp詳細(xì)講解
一、ASP
想到ASP 很多人會(huì)說(shuō) “asp語(yǔ)言不能面向?qū)ο?,功能單一,很多東西實(shí)現(xiàn)不了” 等等諸如此類。 以上說(shuō)法都是錯(cuò)誤的,其一ASp不是一種語(yǔ)言是 微軟用來(lái)代替CGI的一種web框架,只不過(guò)我們一直被扭曲在 vbs就是asp的默認(rèn)語(yǔ)言,把ASP 和 vbs 之間劃了等號(hào)。 其二 Asp 功能其實(shí)并不單一 此web 提供5個(gè)對(duì)象 (request、 response、 server、 session、 appliaction)這就是asp與生俱來(lái)的東西,除了這些東西都是Asp 所用的腳本級(jí)的東西。 而ASP 借助了 Asp.dll動(dòng)態(tài)鏈接庫(kù),理論上可以試用一切腳本語(yǔ)言包括(vbscript 、jsscript、 actionscript、 perl 、python),所以說(shuō)ASP是非常豐富的靈活的 web框架
二、為什么要用python寫(xiě)Asp
python 最近如火如荼,非常之火,他在各大領(lǐng)域都占有自己舉足輕重的地位,web方面自然也少不了他。 Echosong 已經(jīng)用過(guò)django 、web.py 等等python自己的web框架。由于工作需要 Echosong 很大一部分時(shí)間是在寫(xiě)ASP。 而vbs的Asp實(shí)在讓人寫(xiě)得有種 想死感覺(jué),很多功能借助各種 c 或者其他語(yǔ)言寫(xiě)的dll 穩(wěn)定性難以考量,而echosong又是一個(gè)Python 的 十足迷、08年開(kāi)始接觸python 一直是做為一種愛(ài)好沒(méi)斷過(guò),只是一直沒(méi)用于工作。
三、開(kāi)始把兩小伙伴融合在一起
1、asp 的安裝 : 隨著IIS 的安裝asp就成為了默認(rèn)安裝好的web框架
2、安裝 activepython: ActivePython是由 ActiveState 公司推出的專用的 Python 編程和調(diào)試工具。
ActivePython 包含了一個(gè)完整的 Python 內(nèi)核,直接調(diào)用 Python 官方的開(kāi)源內(nèi)核,此外還有 Python 編程需要用到的 IDE,并附加了一些 Python 的 Windows擴(kuò)展,同時(shí)還提供了全部的訪問(wèn) Windows APIs 的服務(wù)。ActivePython 雖然不像純 Python 那樣是開(kāi)源的,但是也可以免費(fèi)下載使用。(注意版本只能下載 2.5的,一開(kāi)始echosong也不行下載了2.7 的版本 結(jié)果無(wú)情的500 個(gè)中緣由也不清楚,不夠2.5的版本也夠用了)
3、命令行運(yùn)行 C:\Python25\Lib\site-packages\win32comext\axscript\client\pyscript.py;
4、完成上面兩步就可以著手寫(xiě)python的Asp了
四 、簡(jiǎn)單的Demo
連接數(shù)據(jù)庫(kù)文件 conn.asp (用pymssql連接mssql數(shù)據(jù)庫(kù))
<%import pymssql
class MSSQL:
def __init__(self,host,user,pwd,db):
self.host = host
self.user = user
self.pwd = pwd
self.db = db
def __GetConnect(self):
if not self.db:
Response.write(NameError,"No connec Info")
self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
cur = self.conn.cursor()
if not cur:
Response.write(NameError,"connect Err")
else:
return cur
def getCur(self):
return self.__GetConnect()
def ExecQuery(self,sql):
cur = self.__GetConnect()
cur.execute(sql)
resList = cur.fetchall()
self.conn.close()
return resList
def ExecNonQuery(self,sql):
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
gmssql = MSSQL(host="****",user="****",pwd="***",db="***")
gcur = MSSQL.getCur()
%>
這里 可以自由的import python的相關(guān)模塊!??!
data.asp 文件調(diào)用conn.asp的數(shù)據(jù)連接執(zhí)行sql語(yǔ)句 循環(huán)顯示字段的值到頁(yè)面
<%@LANGUAGE="python" CODEPAGE="65001"%>
<!--#include file="conn.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無(wú)標(biāo)題文檔</title>
</head>
<body>
<%
resList = gmssql.ExecQuery("select admin_Id, admin_UserId from admin")
%>
<table>
<tr><td>管理員編號(hào)</td><td>管理賬號(hào)</td></tr>
<%
for (admin_Id,admin_UserId) in resList:
Response.write(u"<tr><td>"+str(admin_Id)+"</td>")
Response.write(u"<td>"+str(admin_UserId)+"<td></tr>")
%>
</table>
</body>
</html>

五、用python 寫(xiě)ASp的優(yōu)勢(shì)
1、高度代碼復(fù)用: 可以寫(xiě)自己項(xiàng)目的模塊,把平時(shí)常用的代碼 寫(xiě)成 python的模塊,然后服務(wù)器上所有的都可以借助 import 來(lái)調(diào)取
2、試用python優(yōu)秀特征: python 強(qiáng)大的Python庫(kù) 很多現(xiàn)成的功能直接用,而不要想傳統(tǒng)asp(vbs腳本的)借助 很多 編譯行語(yǔ)言的的dll來(lái)實(shí)現(xiàn)
3、完全的面向?qū)ο螅?vbs是面向過(guò)程的語(yǔ)言,對(duì)象的特征很弱,很多面向?qū)ο蟮乃枷氩荒苡谩?/p>
六、穩(wěn)定性 和性能的考慮
做了壓力測(cè)試 同一時(shí)間處理事務(wù)的能力,各方面參數(shù)強(qiáng)于vbs的,特別是在連接數(shù)據(jù)庫(kù)用了些python 優(yōu)秀開(kāi)源的池處理模塊,使得很多數(shù)據(jù)庫(kù)的瓶頸減輕。(寫(xiě)博文的時(shí)候相關(guān)數(shù)據(jù)截圖沒(méi)有在此電腦上面)
相關(guān)文章
Python內(nèi)置模塊ConfigParser實(shí)現(xiàn)配置讀寫(xiě)功能的方法
這篇文章主要介紹了Python內(nèi)置模塊ConfigParser實(shí)現(xiàn)配置讀寫(xiě)功能的方法,涉及Python使用ConfigParser模塊進(jìn)行配置讀、寫(xiě)、修改、刪除等操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-02-02python模塊之sys模塊和序列化模塊(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇python模塊之sys模塊和序列化模塊(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁(yè)的實(shí)例代碼
在本篇文章里小編給大家整理的是一篇關(guān)于Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁(yè)的實(shí)例代碼,有興趣的朋友們可以學(xué)習(xí)分享下。2020-10-10利用Python爬蟲(chóng)實(shí)現(xiàn)搶購(gòu)某寶秒殺商品
這篇文章主要介紹了利用Python爬蟲(chóng)實(shí)現(xiàn)搶購(gòu)某寶秒殺商品,文章基于python的相關(guān)資料展開(kāi)詳細(xì)的內(nèi)容介紹具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06Python全局變量關(guān)鍵字global的簡(jiǎn)單使用
python中g(shù)lobal關(guān)鍵字主要作用是聲明變量的作用域,下面這篇文章主要給大家介紹了關(guān)于Python全局變量關(guān)鍵字global的簡(jiǎn)單使用,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06