當前位置:
首頁 > 最新 > 配置Apache伺服器實現瀏覽器訪問python程序

配置Apache伺服器實現瀏覽器訪問python程序

近幾年來,隨著大數據和人工智慧概念的日益火爆,python的關注度迅速升溫,成為眾多AI從業者的首選語言。然而,在所有的編程語言中,python並不算萌新,從1991年發布第一個版本以來,至今已經快30年了。微信公眾號【@大數據每日評論】的一篇文章是這樣描述python火爆原因的:

原因一:python是一種說人話的語言;

1.開發者不需要關注底層,降低了開發門檻,正所謂小學生都在用python,玩笑話!

2.語法極其簡單直觀;

3.表達形式一致。

對於原因一,這篇文章利用程序員們最熟悉的程序做了幾種常見語言的對比。

c語言Hello World代碼:

Java語言Hello World代碼:

Python語言Hello World代碼:

原文描述道: "僅僅是一個Hello World程序,就能看出區別了,是不是?"(雖然我不以為然)。

原因二:強大的AI支持庫;

1.矩陣運算(這點與matlab有相似之處);

2.ML(機器學習)模型(比如一個簡單的邏輯回歸就幾行代碼可以搞定);

3.完美的圖表解決方案(python生成dashboard上的各種圖形表格,是非常簡單的事情)。

原因三:規模效應(聽起來很抽象!)。

"根據以高收入國家Stack Overflow問題閱讀量為基礎的主要編程語言趨勢分析統計,可以看出,近年來,Pyhotn已經力壓Java和Javascript,成為目前發達國家增長最快的編程語言。"(這裡為Javascript打一下廣告,Javascript在眾多編程語言中雖不是一馬當先,當也可謂是後起之秀;特別是隨著移動互聯網的普及,Javascript的地位和使用量都在不斷上升,從目前來看,javascript語言的生態稱得上是百花齊放,node.js、vue.js、jquery.js...等等編程框架層出不窮。另外,當今中國使用最頻繁的社交軟體—微信出品的小程序,其中大量代碼使用javascript。)

以上描述了python語言火爆的幾點原因,接下來說說python的web編程。

大家都知道,python由於以上描述的幾點原因,被廣大的AI從業者視為自身的拿手好戲,其實,python是一門典型的解釋型語言,其不至於訓練神經網路等用途,web應用也是python的另一"殺手鐧"(有點誇張)。接下來就帶你進入python的web編程。

首先,假設你對http、https、tcp等協議的運行機理有所了解,今天所講內容基於如下的開發環境,並假設你已搭建此環境。

運行環境:Win10+Python3.6+Apache2.2+CGI+Chrome瀏覽器,環境很簡單,不需要花費一分錢,這是重點。

步驟一:配置apache伺服器運行CGI模式,具體過程表述如下:

1.在apache安裝目錄下找到其配置文件httpd.conf:

2.利用記事本或sublime(強烈推薦)打開該文件並找到以下內容:

修改ScriptAlias /cgi-bin/ "E:comcgibin"中的"E:comcgibin"為你自己的cgi directory。

接下來找到:

最後,找到:(如果沒有就直接添加此句)

如果找到,則添加.py類型的文件即可,如果沒有此句,直接添加即可。

至此,apache伺服器配置完畢,接下來讓我們進入python的web編程之旅吧!

首先,使用sublime創建一個文本文件,並命名為index.py,將其保存到apache的伺服器根目錄即可,具體內容如下:

index.py文件共有4行程序,其中第一行含義是指定本地伺服器的python解釋器地址,(必須)、第二行表示此類文件的類型是text或plain(必須)、第三行輸出換行符(必須)、第四行則是經典的Hello World程序,此行以後就是你自己發揮的天地了。

打開Chrome瀏覽器,在地址欄中輸入localhost/cgibin/index.py,運行結果如下:

怎麼樣?是不是超級簡單,接下來來點不一樣的,動態web編程,連接mysql資料庫,生成json數據格式顯示。具體代碼如下:

#!C:UsersBX-yyAppDataLocalProgramsPythonPython36python.exe

print ("Content-type: text/plain")

print ("")

print ("Hello Word!")

import MySQLdb

import sys

import time

import json

#import urllib2

# 打開資料庫連接

cursor = db.cursor()

print ("開始資料庫操作")

sql = "SELECT * FROM ci_goods;"

try:

cursor.execute(sql)

results = cursor.fetchall()

for row in results:

fname = row[0]

lname = row[1]

age = row[2]

sex = row[3]

income = row[4]

print (fname,lname,age,sex,income,"
")

#print(json.dumps(results))

except:

print ("資料庫查詢失敗")

text="資料庫讀取操作結束"

print (text)

db.close()

打開瀏覽器查看運行結果如下:

由於以上格式的輸出是python的print函數直接輸出的對象信息,不便於網路里的數據傳輸,下面將查詢結果json序列化,具體代碼改動如下:

即取消print(json.dumps(results))前面的注釋,打開瀏覽器查看運行結果如下:

是不是看起來太亂,可讀性極差,哈哈!這就是通過json序列化後的結果,別小看它哦!在進行數據傳輸和交換解釋的時候可是很有用的哦。

最後,想把此文件做成python的API程序,通過ajax的方法進行訪問,於是乎,修改代碼如下:

#!C:UsersBX-yyAppDataLocalProgramsPythonPython36python.exe

print ("Content-type: text/plain")

print ("")

print ("Hello Word!")

import MySQLdb

import sys

import time

import json

def queryDb():

cursor = db.cursor()

print ("開始資料庫操作")

sql = "SELECT * FROM ci_goods;"

try:

cursor.execute(sql)

results = cursor.fetchall()

for row in results:

fname = row[0]

lname = row[1]

age = row[2]

sex = row[3]

income = row[4]

#print (fname,lname,age,sex,income,"
")

print(json.dumps(results))

except:

print ("資料庫查詢失敗")

text="資料庫讀取操作結束"

print (text)

db.close()

urlPara=True

if urlPara==True:

queryDb()

else:

retInfo={"error":False,"data":"沒有此類查詢"}

print(json.dumps(retInfo))

前端通過javascript的jquery框架的ajax方法請求數據服務,具體代碼如下:

打開瀏覽器,訪問index.html驗證結果如下:

從結果可以看到,中文顯示亂碼,這不是大問題,只要在python文件開頭指定文件編碼格式為utf-8即可解決。

至此,配置apache伺服器實現瀏覽器訪問python程序到此結束。

接下來,小編將致力於後台採用基於tensorflow的深度學習框架訓練模型,前端使用javascript將模型和處理結果可視化,是不是很有趣,如果你對這方面也感興趣,歡迎後台留言聯繫我!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI小精靈 的精彩文章:

TAG:AI小精靈 |