用Python來編寫網站,必須要能夠通過python操作資料庫,所謂操作資料庫,就是通過python實現對資料的串連,以及對記錄、欄位的各種操作。上一講提到的那種操作方式,是看官直接通過互動模式來操作資料庫。
安裝python-MySQLdb
要想通過python來操作資料庫,還需要在已經安裝了mysql的基礎上安裝一個稱之為mysqldb的庫,它是一個介面程式,python通過它對mysql資料實現各種操作。
在編程中,會遇到很多類似的介面程式,通過介面程式對另外一個對象進行操作,比較簡單。介面程式就好比鑰匙,如果要開鎖,人直接用手指去捅,肯定是不行的,那麼必須藉助工具,插入到鎖孔中,把所開啟,開啟所之後,門開了,就可以操作門裡面的東西了。那麼開啟所的工具就是介面程式。而開啟所的工具會有便利與否之分,如果用這鎖的鑰匙,就便利,如果用別的工具,或許不便利(其實還分人,也就是人開鎖的水平,如果是江洋大盜或者小毛賊什麼的,擅長開鎖,用別的工具也便利了),也就是介面程式不同,編碼水平不同,都是考慮因素。
這裡下載python-mysqldb:https://pypi.python.org/pypi/MySQL-python/
下載之後就可以安裝了。
我這裡只能示範ubuntu下安裝的過程。
複製代碼 代碼如下:
sudo apt-get install python-MySQLdb
在shell中輸入上面的命令列,就安裝了。看看,多麼簡潔的安裝,請快快用ubuntu吧。我願意做ubuntu的免費代言。哈哈。
不管什麼系統,安裝不是難題。安裝之後,怎麼知道安裝的結果呢?
複製代碼 代碼如下:
>>> import MySQLdb
在python的互動模式中,輸入上面的指令,如果不報錯,恭喜你,已經安裝好了。如果報錯,恭喜你,可以藉著錯誤資訊提高自己的電腦水平了,請求助於google大神。
互動模式下操作資料庫之串連資料庫
操作資料庫的前提是先有資料庫。
先建立一個資料庫。
複製代碼 代碼如下:
qw@qw-Latitude-E4300:~$ mysql -u root -p
Enter password:
開啟資料庫,正確輸入密碼之後,呈現下面的結果
複製代碼 代碼如下:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 373
Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
在這個狀態下,輸入如下命令,建立一個資料庫:
複製代碼 代碼如下:
mysql> create database qiwsirtest character set utf8;
Query OK, 1 row affected (0.00 sec)
注意上面的指令,如果僅僅輸入:create database qiwsirtest,也可以,但是,我在後面增加了character set utf8,意思是所建立的資料庫qiwsirtest,編碼是utf-8的,這樣存入漢字就不是亂碼了。
看到那一行提示:Query OK, 1 row affected (0.00 sec),就說明這個資料庫已經建立好了,名字叫做:qiwsirtest
資料庫建立之後,就可以用python通過已經安裝的mysqldb來串連這個名字叫做qiwsirtest的庫了。進入到python互動模式(現在這個實驗室做實驗)。
複製代碼 代碼如下:
>>> import MySQLdb
>>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="qiwsirtest",port=3306,charset="utf8")
逐個解釋上述命令的含義:
host:等號的後面應該填寫mysql資料庫的地址,因為就資料庫就在本機上(也稱作本地),所以使用localhost,注意引號。如果在其它的伺服器上,這裡應該填寫ip地址。一般中小型的網站,資料庫和程式都是在同一台伺服器(電腦)上,就使用localhost了。
user:登入資料庫的使用者名稱,這裡一般填寫"root",還是要注意引號。當然,如果是比較大型的服務,資料庫會提供不同的使用者,那時候可以更改為相應使用者。但是,不同使用者的許可權可能不同,所以,在程式中,如果要操作資料庫,還要注意所擁有的許可權。在這裡用root,就放心了,什麼許可權都有啦。不過,這樣做,在大型系統中是應該避免的。
passwd:上述user賬戶對應的登入mysql的密碼。我在上面的例子中用的密碼是"123123"。不要忘記引號。
db:就是剛剛通create命令建立的資料庫,我建立的資料庫名字是"qiwsirtest",還是要注意引號。看官如果建立的資料庫名字不是這個,就寫自己所建資料庫名字。
port:一般情況,mysql的預設連接埠是3306,當mysql被安裝到伺服器之後,為了能夠允許網路訪問,伺服器(電腦)要提供一個訪問連接埠給它。
charset:這個設定,在很多教程中都不寫,結果在真正進行資料存放區的時候,發現有亂碼。這裡我將qiwsirtest這個資料庫的編碼設定為utf-8格式,這樣就允許存入漢字而無亂碼了。注意,在mysql設定中,utf-8寫成utf8,沒有中間的橫線。但是在python檔案開頭和其它地方設定編碼格式的時候,要寫成utf-8。切記!
註:connect中的host、user、passwd等可以不寫,只有在寫的時候按照host、user、passwd、db(可以不寫)、port順序寫就可以,注意連接埠號碼port=3306還是不要省略的為好,如果沒有db在port前面,直接寫3306會報錯.
其實,關於connect的參數還不少,下面摘抄來自mysqldb官方文檔的內容,把所有的參數都列出來,還有相關說明,請看官認真閱讀。不過,上面幾個是常用的,其它的看情況使用。