如何使用Python連接MySQL數(shù)據(jù)庫(kù)?
該筆記參考了PyMySQL官方文檔和《python數(shù)據(jù)采集》關(guān)于數(shù)據(jù)存儲(chǔ)的部分,歡迎大家去閱讀原著,相信會(huì)理解的更加透徹。
補(bǔ)充:文末增加Oracle數(shù)據(jù)庫(kù)的連接方式,大同小異。
背景:
我是在Anaconda notebook中進(jìn)行連接實(shí)驗(yàn)的,環(huán)境Python3.6,當(dāng)然也可以在Python Shell里面進(jìn)行操作。
最常用也最穩(wěn)定的用于連接MySQL數(shù)據(jù)庫(kù)的python庫(kù)是PyMySQL,所以本文討論的是利用PyMySQL連接MySQL數(shù)據(jù)庫(kù),以及如何存儲(chǔ)數(shù)據(jù)。
下面開(kāi)始:
1、安裝PyMySQL庫(kù)
最簡(jiǎn)單的方式:在命令行輸入 pip install pymysql
或者:下載whl文件進(jìn)行安裝,安裝過(guò)程自行百度。
2、安裝MySQL數(shù)據(jù)庫(kù)
MySQL數(shù)據(jù)庫(kù)類型有兩種:MySQL和MariaDB,我用的是后者M(jìn)ariaDB。
兩者在絕大部分性能上是兼容的,使用起來(lái)感覺(jué)不到啥區(qū)別。
給出下載地址:MySQL,MariaDB,安裝過(guò)程很簡(jiǎn)單,一路Next Step,不過(guò)要記好密碼。
有個(gè)小插曲,MySQL和MariaDB相當(dāng)于姐姐妹妹的關(guān)系,兩者由同一個(gè)人(Widenius)創(chuàng)建的。MySQL被Oracle收購(gòu)后,Widenius先生覺(jué)得不爽,于是搞了個(gè)MariaDB,可以完全替代MySQL。大牛就是任性。
3、SQL基本語(yǔ)法
下面要用SQL的表創(chuàng)建、查詢、數(shù)據(jù)插入等功能,這里簡(jiǎn)要介紹一下SQL語(yǔ)言的基本語(yǔ)句。
查看數(shù)據(jù)庫(kù):SHOW DATABASES;
創(chuàng)建數(shù)據(jù)庫(kù):CREATE DATEBASE 數(shù)據(jù)庫(kù)名稱;
使用數(shù)據(jù)庫(kù):USE 數(shù)據(jù)庫(kù)名稱;
查看數(shù)據(jù)表:SHOW TABLES;
創(chuàng)建數(shù)據(jù)表:CREATE TABLE 表名稱(列名1 (數(shù)據(jù)類型1),列名2 (數(shù)據(jù)類型2));
插入數(shù)據(jù):INSERT INTO 表名稱(列名1,列名2) VALUES(數(shù)據(jù)1,數(shù)據(jù)2);
查看數(shù)據(jù):SELECT * FROM 表名稱;
更新數(shù)據(jù):UPDATE 表名稱 SET 列名1=新數(shù)據(jù)1,列名2=新數(shù)據(jù)2 WHERE 某列=某數(shù)據(jù);
4、連接數(shù)據(jù)庫(kù)
安裝好必要得文件和庫(kù)后,接下來(lái)正式開(kāi)始連接數(shù)據(jù)庫(kù)吧,雖然神秘卻不難哦!
- #首先導(dǎo)入PyMySQL庫(kù)
- import pymysql
- #連接數(shù)據(jù)庫(kù),創(chuàng)建連接對(duì)象connection
- #連接對(duì)象作用是:連接數(shù)據(jù)庫(kù)、發(fā)送數(shù)據(jù)庫(kù)信息、處理回滾操作(查詢中斷時(shí),數(shù)據(jù)庫(kù)回到最初狀態(tài))、創(chuàng)建新的光標(biāo)對(duì)象
- connection = pymysql.connect(host = 'localhost' #host屬性
- user = 'root' #用戶名
- password = '******' #此處填登錄數(shù)據(jù)庫(kù)的密碼
- db = 'mysql' #數(shù)據(jù)庫(kù)名
- )
執(zhí)行這段代碼就連接好了!
5.使用python代碼操作MySQL數(shù)據(jù)庫(kù)
首先來(lái)查看一下有哪些數(shù)據(jù)庫(kù):
#創(chuàng)建光標(biāo)對(duì)象,一個(gè)連接可以有很多光標(biāo),一個(gè)光標(biāo)跟蹤一種數(shù)據(jù)狀態(tài)。
#光標(biāo)對(duì)象作用是:、創(chuàng)建、刪除、寫(xiě)入、查詢等等
cur = connection.cursor()
#查看有哪些數(shù)據(jù)庫(kù),通過(guò)cur.fetchall()獲取查詢所有結(jié)果
print(cur.fetchall())
打印出所有數(shù)據(jù)庫(kù):
(('information_schema',),
('law',),
('mysql',),
('performance_schema',),
('test',))
在test數(shù)據(jù)庫(kù)里創(chuàng)建表:
- #使用數(shù)據(jù)庫(kù)test
- cur.execute('USE test')
- #在test數(shù)據(jù)庫(kù)里創(chuàng)建表student,有name列和age列
- cur.execute('CREATE TABLE student(name VARCHAR(20),age TINYINT(3))')
向數(shù)據(jù)表student中插入一條數(shù)據(jù):
- sql = 'INSERT INTO student (name,age) VALUES (%s,%s)'
- cur.execute(sql,('XiaoMing',23))
查看數(shù)據(jù)表student內(nèi)容:
- cur.execute('SELECT * FROM student')
- print(cur.fetchone())
打印輸出為:('XiaoMing', 23)
Bingo!是我們剛剛插入的一條數(shù)據(jù)
最后,要記得關(guān)閉光標(biāo)和連接:
- #關(guān)閉連接對(duì)象,否則會(huì)導(dǎo)致連接泄漏,消耗數(shù)據(jù)庫(kù)資源
- connection.close()
- #關(guān)閉光標(biāo)
- cur.close()
OK了,整個(gè)流程大致如此。當(dāng)然這里都是很基礎(chǔ)的操作,更多的使用方法需要在PyMySQL官方文檔里去尋找。
補(bǔ)充:
Oracle數(shù)據(jù)庫(kù)連接
1、下載安裝外包c(diǎn)x_Oracle,方式:在命令行輸入 pip install cx_Oracle
2、連接
- conn = oracle.connect('username/password@host:port/sid')#分別填用戶名/密碼/數(shù)據(jù)庫(kù)所在IP地址:port/sid
3、獲取光標(biāo)對(duì)象curser
- cur = conn.cursor()
4、使用cursor進(jìn)行各種操作
- cur.execute(sql語(yǔ)句)
5、關(guān)閉cursur、conn
- cursor.close()
- conn.close()
【編輯推薦】