在python中配置MySQL資料庫

來源:互聯網
上載者:User

標籤:

MySQL資料庫(1)

儘管用檔案形式將資料儲存到磁碟,已經是一種不錯的方式。但是,人們還是發明了更具有格式化特點,並且寫入和讀取更快速便捷的東西——資料庫(如果閱讀港台的資料,它們稱之為“資料庫”)。維基百科對資料庫有比較詳細的說明:

資料庫指的是以一定方式儲存在一起、能為多個使用者共用、具有儘可能小的冗餘度、與應用程式彼此獨立的資料集合。

到目前為止,地球上有三種類型的資料:

  • 關係型資料庫:MySQL、Microsoft Access、SQL Server、Oracle、...
  • 非關係型資料庫:MongoDB、BigTable(Google)、...
  • 索引值資料庫:Apache Cassandra(Facebook)、LevelDB(Google) ...

在本教程中,我們主要介紹常用的開源的資料庫,其中MySQL是典型代表。

概況

MySQL是一個使用非常廣泛的資料庫,很多網站都是用它。關於這個資料庫有很多傳說。例如維基百科上這麼說:

MySQL(官方發音為英語發音:/ma? ??skju???l/ "My S-Q-L",[1],但也經常讀作英語發音:/ma? ?si?kw?l/ "My Sequel")原本是一個開放原始碼的關聯式資料庫管理系統,原開發人員為瑞典的MySQL AB公司,該公司於2008年被昇陽微系統(Sun Microsystems)收購。2009年,甲骨文公司(Oracle)收購昇陽微系統公司,MySQL成為Oracle旗下產品。

MySQL在過去由於效能高、成本低、可靠性好,已經成為最流行的開來源資料庫,因此被廣泛地應用在Internet上的中小型網站中。隨著MySQL的不斷成熟,它也逐漸用於更多大規模網站和應用,比如維基百科、Google和Facebook等網站。非常流行的開源軟體組合LAMP中的“M”指的就是MySQL。

但被甲骨文公司收購後,Oracle大幅調漲MySQL商業版的售價,且甲骨文公司不再支援另一個自由軟體項目OpenSolaris的發展,因此導致自由軟體社區們對於Oracle是否還會持續支援MySQL社區版(MySQL之中唯一的免費版本)有所隱憂,因此原先一些使用MySQL的開源軟體逐漸轉向其它的資料庫。例如維基百科已於2013年正式宣布將從MySQL遷移到MariaDB資料庫。

不管怎麼著,MySQL依然是一個不錯的資料庫選擇,足夠支援讀者完成一個相當不小的網站。

安裝

你的電腦或許不會天生就有MySQL(是不是有的作業系統,在安裝的時候就內建了呢?的確有,所以精選Linux的某發行版),它本質上也是一個程式,若有必要,須安裝。

我用ubuntu作業系統示範,因為我相信讀者將來在真正的工程項目中,多數情況下是要操作Linux系統的伺服器,並且,我酷愛用ubuntu。還有,本教程的目標是from beginner to master,不管是不是真的master,總要裝得像,Linux能夠給你撐門面。

第一步,在shell端運行如下命令:

sudo apt-get install mysql-server

運行完畢,就安裝好了這個資料庫。是不是很簡單呢?當然,當然,還要進行配置。

第二步,配置MySQL

安裝之後,運行:

service mysqld start

啟動mysql資料庫。然後進行下面的操作,對其進行配置。

預設的MySQL安裝之後根使用者是沒有密碼的,注意,這裡有一個名詞“根使用者”,其使用者名稱是:root。運行:

$mysql -u root

在這裡之所以用-u root是因為我現在是一般使用者(firehare),如果不加-u root的話,mysql會以為是firehare在登入。

進入mysql之後,會看到>符號開頭,這就是mysql的命令操作介面了。

下面設定Mysql中的root使用者密碼了,否則,Mysql服務無安全可言了。

mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY "123456";

用123456做為root使用者的密碼,應該是非常愚蠢的,如果在真正的項目中,最好別這樣做,要用大小寫字母與數字混合的密碼,且不少於8位。

以後如果在登入資料庫,就可以用剛才設定的密碼了。

運行

安裝之後,就要運行它,並操作這個資料庫。

$ mysql -u root -pEnter password:

輸入資料庫的密碼,之後出現:

Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 373Server 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 itsaffiliates. Other names may be trademarks of their respectiveowners.Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.mysql>

看到這個介面內容,就說明你已經進入到資料裡面了。接下來就可以對這個資料進行操作。例如:

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || carstore           || cutvideo           || itdiffer           || mysql              || performance_schema || test               |+--------------------+

用這個命令,就列出了當前已經有的資料庫。

對資料庫的操作,除了用命令之外,還可以使用一些視覺化檢視。比如phpmyadmin就是不錯的。

更多資料庫操作的知識,這裡就不介紹了,讀者可以參考有關書籍。

MySQL資料庫已經安裝好,但是Python還不能操作它,還要繼續安裝python操作資料庫的模組——python-MySQLdb

安裝python-MySQLdb

python-MySQLdb是一個介面程式,python通過它對mysql資料實現各種操作。

在編程中,會遇到很多類似的介面程式,通過介面程式對另外一個對象進行操作。介面程式就好比鑰匙,如果要開鎖,人直接用手指去捅,肯定是不行的,那麼必須藉助工具,插入到鎖孔中,把鎖開啟,之後,門開了,就可以操作門裡面的東西了。那麼開啟鎖的工具就是介面程式。誰都知道,用對應的鑰匙開鎖是最好的,如果用別的工具(比如鎚子),或許不便利(其實還分人,也就是人開鎖的水平,如果是江洋大盜或者小毛賊什麼的,擅長開鎖,用別的工具也便利了),也就是介面程式不同,編碼水平不同,都是考慮因素。

囉嗦這麼多,一言蔽之,python-MySQLdb就是開啟MySQL資料庫的鑰匙。

如果要源碼安裝,可以這裡下載python-mysqldb:https://pypi.python.org/pypi/MySQL-python/

下載之後就可以安裝了。

ubuntu下可以這麼做:

sudo apt-get install build-essential python-dev libmysqlclient-devsudo apt-get install python-MySQLdb

也可以用pip來安裝:

pip install mysql-python

安裝之後,在python互動模式下:

>>> import MySQLdb

如果不報錯,恭喜你,已經安裝好了。如果報錯,恭喜你,可以藉著錯誤資訊提高自己的電腦水平了,請求助於google大神。

串連資料庫

要先找到老婆,才能談如何養育自己的孩子,同理串連資料庫之先要建立資料庫。

$ mysql -u root -pEnter password:

進入到資料庫操作介面:

Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 373Server 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 itsaffiliates. Other names may be trademarks of their respectiveowners.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的庫了。

>>> 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會報錯.

 

已經完成了資料庫的串連。

 

在python中配置MySQL資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.