Time of Update: 2016-06-10
MySQL是Web世界中使用最廣泛的資料庫伺服器。SQLite的特點是輕量級、可嵌入,但不能承受高並發訪問,適合案頭和行動裝置 App。而MySQL是為伺服器端設計的資料庫,能承受高並發訪問,同時佔用的記憶體也遠遠大於SQLite。此外,MySQL內部有多種資料庫引擎,最常用的引擎是支援資料庫事務的InnoDB。安裝MySQL可以直接從MySQL官方網站下載最新的Community Server
Time of Update: 2016-06-10
本文執行個體講述了python執行get提交的方法。分享給大家供大家參考。具體如下:import sys, urllib2, urllibdef addGETdata(url, data): """Adds data to url. Data should be a list or tuple consisting of 2-item lists or tuples of the form: (key, value). Items that have no key should
Time of Update: 2016-06-10
本文執行個體講述了python基於socket實現網路廣播的方法。分享給大家供大家參考。具體實現方法如下:import socket, sysdest = ('', 51423)s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)s.sendto("Hi", dest)print "Looking for replies; press
Time of Update: 2016-06-10
Python支援多種圖形介面的第三方庫,包括: Tk wxWidgets Qt GTK等等。但是Python內建的庫是支援Tk的Tkinter,使用Tkinter,無需安裝任何包,就可以直接使用。本章簡單介紹如何使用Tkinter進行GUI編程。Tkinter我們來梳理一下概念: 我們編寫的Python代碼會調用內建的Tkinter,Tkinter封裝了訪問Tk的介面; Tk是一個圖形庫,支援多個作業系統,使用Tcl語言開發;
Time of Update: 2016-06-10
資料庫表是一個二維表,包含多行多列。把一個表的內容用Python的資料結構表示出來的話,可以用一個list表示多行,list的每一個元素是tuple,表示一行記錄,比如,包含id和name的user表:[ ('1', 'Michael'), ('2', 'Bob'), ('3', 'Adam')]Python的DB-API返回的資料結構就是像上面這樣表示的。但是用tuple表示一行很難看出表的結構。如果把一個tuple用class執行個體來表示,就可以更容易地看出表的結構來:class
Time of Update: 2016-06-10
Socket是網路編程的一個抽象概念。通常我們用一個Socket表示“開啟了一個網路連結”,而開啟一個Socket需要知道目標電腦的IP地址和連接埠號碼,再指定協議類型即可。用戶端大多數串連都是可靠的TCP串連。建立TCP串連時,主動發起串連的叫用戶端,被動響應串連的叫伺服器。舉個例子,當我們在瀏覽器中訪問新浪時,我們自己的電腦就是用戶端,瀏覽器會主動向新浪的伺服器發起串連。如果一切順利,新浪的伺服器接受了我們的串連,一個TCP串連就建立起來的,後面的通訊就是發送網頁內容了。所以,我們要建立一個
Time of Update: 2016-06-10
瞭解了HTTP協議和HTML文檔,我們其實就明白了一個Web應用的本質就是: 瀏覽器發送一個HTTP請求; 伺服器收到請求,產生一個HTML文檔; 伺服器把HTML文檔作為HTTP響應的Body發送給瀏覽器; 瀏覽器收到HTTP響應,從HTTP
Time of Update: 2016-06-10
有了Web架構和ORM架構,我們就可以開始裝配App了。通常,一個Web App在運行時都需要讀取設定檔,比如資料庫的使用者名稱、口令等,在不同的環境中運行時,Web App可以通過讀取不同的設定檔來獲得正確的配置。由於Python本身文法簡單,完全可以直接用Python原始碼來實現配置,而不需要再解析一個單獨的.properties或者.yaml等設定檔。預設的設定檔應該完全符合本地開發環境,這樣,無需任何設定,就可以立刻啟動伺服器。我們把預設的設定檔命名為config_default.py:
Time of Update: 2016-06-10
Web架構把我們從WSGI中拯救出來了。現在,我們只需要不斷地編寫函數,帶上URL,就可以繼續Web App的開發了。但是,Web App不僅僅是處理邏輯,展示給使用者的頁面也非常重要。在函數中返回一個包含HTML的字串,簡單的頁面還可以,但是,想想新浪首頁的6000多行的HTML,你確信能在Python的字串中正確地寫出來嗎?反正我是做不到。俗話說得好,不懂前端的Python工程師不是好的產品經理。有Web開發經驗的同學都明白,Web
Time of Update: 2016-06-10
現在,ORM架構、Web架構和配置都已就緒,我們可以開始編寫一個最簡單的MVC,把它們全部啟動起來。通過Web架構的@decorator和ORM架構的Model支援,可以很容易地編寫一個處理首頁URL的函數:# urls.pyfrom transwarp.web import get, viewfrom models import User, Blog, Comment@view('test_users.html')@get('/')def test_users(): users =
Time of Update: 2016-06-10
Python通過yield提供了對協程的基本支援,但是不完全。而第三方的gevent為Python提供了比較完善的協程支援。gevent是第三方庫,通過greenlet實現協程,其基本思想是:當一個greenlet遇到IO操作時,比如訪問網路,就自動切換到其他的greenlet,等到IO操作完成,再在適當的時候切換回來繼續執行。由於IO操作非常耗時,經常使程式處於等待狀態,有了gevent為我們自動切換協程,就保證總有greenlet在運行,而不是等待IO。由於切換是在IO操作時自動完成,所以g
Time of Update: 2016-06-10
使用者管理是絕大部分Web網站都需要解決的問題。使用者管理涉及到使用者註冊和登入。使用者註冊相對簡單,我們可以先通過API把使用者註冊這個功能實現了:_RE_MD5 = re.compile(r'^[0-9a-f]{32}$')@api@post('/api/users')def register_user(): i = ctx.request.input(name='', email='', password='') name = i.name.strip() email = i.email.
Time of Update: 2016-06-10
MVVM模式不但可用於Form表單,在複雜的管理頁面中也能大顯身手。例如,分頁顯示Blog的功能,我們先把後端代碼寫出來:在apis.py中定義一個Page類用於儲存分頁資訊:class Page(object): def __init__(self, item_count, page_index=1, page_size=10): self.item_count = item_count self.page_size = page_size self.page_count
Time of Update: 2016-06-10
1.分分鐘扒一個網頁下來怎樣扒網頁呢?其實就是根據URL來擷取它的網頁資訊,雖然我們在瀏覽器中看到的是一幅幅優美的畫面,但是其實是由瀏覽器解釋才呈現出來的,實質它 是一段HTML代碼,加 JS、CSS,如果把網頁比作一個人,那麼HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。所以最重要的部分是存在於HTML中的,下面我 們就寫個例子來扒一個網頁下來。 import urllib2 response =
Time of Update: 2016-06-10
本文執行個體講述了python使用mailbox列印電子郵件的方法。分享給大家供大家參考。具體如下:該範例在linux下使用import mailboxmailboxname = "/tmp/mymailbox"mbox = mailbox.UnixMailbox(open(mailboxname))msgcounter = 0while 1: mailmsg = mbox.next() if not mailmsg: break msgcounter = msgcounter +
Time of Update: 2016-06-10
本文執行個體講述了Python中類的定義、繼承及使用對象的方法。分享給大家供大家參考。具體分析如下:Python編程中類的概念可以比作是某種類型集合的描述,如“人類”可以被看作一個類,然後用人類這個類定義出每個具體的人——你、我、他等作為其對象。類還擁有屬性和功能,屬性即類本身的一些特性,如人類有名字、身高和體重等屬性,而具體值則會根據每個人的不同;功能則是類所能實現的行為,如人類擁有吃飯、走路和睡覺等功能。具體的形式如下:例:類的概念:class 人類: 名字 = '
Time of Update: 2016-06-10
1.設定Headers有些網站不會同意程式直接用上面的方式進行訪問,如果識別有問題,那麼網站根本不會響應,所以為了完全類比瀏覽器的工作,我們需要設定一些Headers 的屬性。首先,開啟我們的瀏覽器,調試瀏覽器F12,我用的是Chrome,開啟網路監聽,示意如下,比如知乎,點登入之後,我們會發現登陸之後介面都變化 了,出現一個新的介面,實質上這個頁麵包含了許許多多的內容,這些內容也不是一次性就載入完成的,實質上是執行了好多次請求,一般是首先請求HTML文 件,然後載入JS,CSS
Time of Update: 2016-06-10
本文執行個體講述了python中隨機函數random用法。分享給大家供大家參考。具體如下:python中的random模組功能非常強大,可以產生各種隨機值#! python# randomimport randomprint random.choice(['apple', 'pear', 'banana'])#從數組中隨機播放一個元素print random.sample(xrange(100), 10)# sampling without replacementprint
Time of Update: 2016-06-10
大家好哈,上一節我們研究了一下爬蟲的異常處理問題,那麼接下來我們一起來看一下Cookie的使用。為什麼要使用Cookie呢?Cookie,指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料(通常經過加密)比如說有些網站需要登入後才能訪問某個頁面,在登入之前,你想抓取某個頁面內容是不允許的。那麼我們可以利用Urllib2庫儲存我們登入的Cookie,然後再抓取其他頁面就達到目的了。在此之前呢,我們必須先介紹一個opener的概念。1.Opener當你擷取一個URL你
Time of Update: 2016-06-10
本文執行個體講述了python中self原理。分享給大家供大家參考。具體分析如下:類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱,但是在調用這個方法的時候你不為這個參數賦值,Python會提供這個值。這個特別的變數指對象本身,按照慣例它的名稱是self。假如你有一個類稱為MyClass和這個類的一個執行個體MyObject。當你調用這個對象的方法 MyObject.method(arg1, arg2) 的時候,這會由Python自動轉為