Python操作MySQL基本環(huán)境搭建及增刪改查實(shí)現(xiàn)
寫作原因:這篇文章將帶領(lǐng)讀者使用Python操作MySQL數(shù)據(jù)庫(kù)。在PHP和Python之間博主更傾向于Python,而后臺(tái)開發(fā)免不了要操作數(shù)據(jù)庫(kù),所以就有了這篇文章。
安裝Python
鑒于上一篇關(guān)于Python的文章已經(jīng)有關(guān)于Python安裝的介紹了,這里就不花筆墨多說(shuō)了。
安裝MySQL
MySQL介紹
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于Oracle旗下產(chǎn)品。MySQL是一款優(yōu)秀的開源產(chǎn)品,正是由于其開源性使其逐漸成為現(xiàn)今商業(yè)數(shù)據(jù)庫(kù)的主流選擇之一。
具體安裝流程(Win版)
由于博主目前只在Win平臺(tái)測(cè)試,所以這里只介紹Win版的安裝流程。
首先下載mysql-5.6.33-winx64( 下載地址 ),mysql5.7以上版本在安裝的過(guò)程中會(huì)出現(xiàn)一些問(wèn)題,所以本人選擇了5.6版本。安裝的過(guò)程一直下一步就行;
然后配置系統(tǒng)環(huán)境變量。找到“系統(tǒng)-高級(jí)系統(tǒng)設(shè)置-環(huán)境變量”,在Path的最后加上數(shù)據(jù)庫(kù)內(nèi)的bin文件夾目錄如“;D:\mysql-5.6.33-winx64\bin”(注意一定要加分號(hào));
到根目錄下打開my-default.ini文件,將“# basedir = …… # datadir = ……”修改為“basedir = D:\mysql-5.6.33-winx64 datadir = D:\mysql-5.6.33-winx64\data”;
打開cmd(一定要管理員權(quán)限!)轉(zhuǎn)到“D:\mysql-5.6.33-winx64\bin”目錄,輸入“mysqld -install”。等到出現(xiàn)“Service successfully installed.”之后就繼續(xù)輸入“net start mysql”。這樣mysql就啟動(dòng)了。
使用pymysql包
下面就是正是使用Python來(lái)操作mysql的第一步了。打開cmd,直接輸入pip install PyMySql,等它安裝完畢就OK了,就是這么簡(jiǎn)單。
利用Mysql WorkBench可視化數(shù)據(jù)庫(kù)
對(duì)于數(shù)據(jù)庫(kù),如果用命令行的話有時(shí)可能會(huì)比較麻煩,這時(shí)可以考慮使用GUI界面代替CLI。官方提供了MySql WorkBench( 點(diǎn)擊下載 )。使用WorkBench我們可以輕易地查看本地?cái)?shù)據(jù)庫(kù)的一些狀態(tài)、數(shù)據(jù)庫(kù)的操作等等,具體使用不多說(shuō)了,這里只說(shuō)一下新建數(shù)據(jù)庫(kù)和數(shù)據(jù)表。點(diǎn)擊圖標(biāo)欄第四個(gè)圖標(biāo)(create a new schema in the connected server),設(shè)置好相關(guān)參數(shù)就可以創(chuàng)建數(shù)據(jù)庫(kù)。在Schema工具欄中,選擇你要添加表的數(shù)據(jù)庫(kù),右鍵Tables選擇“Create Table”,寫好字段和數(shù)據(jù)類型,即可完成數(shù)據(jù)表的創(chuàng)建。
實(shí)現(xiàn)基本的數(shù)據(jù)庫(kù)的增刪改查
下面開始寫代碼。
具體代碼如下:
import pymysql
def connDB():
#連接數(shù)據(jù)庫(kù)
conn=pymysql.connect(host='localhost',user='root',passwd='',db='first')
cur=conn.cursor()
return (conn,cur)
def exeUpdate(conn,cur,sql):
#更新語(yǔ)句,可執(zhí)行Update,Insert語(yǔ)句
sta=cur.execute(sql)
conn.commit()
return (sta)
def exeDelete(conn,cur,IDs):
#刪除語(yǔ)句,可批量刪除
for eachID in IDs.split(' '):
sta=cur.execute('delete from students where Id=%d'%int(eachID))
conn.commit()
return (sta)
def exeQuery(cur,sql):
#查詢語(yǔ)句
cur.execute(sql)
result = cur.fetchone()
return (result)
def connClose(conn,cur):
#關(guān)閉所有連接
cur.close()
conn.close()
conn = connDB()[0]
cur = connDB()[1]
exeUpdate(conn,cur,"INSERT INTO first_note (idfirst_note, note_title , note_content ) VALUES (0,'Title','This is the content');")
print(exeQuery(cur,"SELECT note_title ,note_content FROM first_note;"))
connClose()
這里有幾個(gè)地方說(shuō)明一下:
創(chuàng)建:
我們通過(guò)conn=pymysql.connect(host='localhost',user='root',passwd='',db='first') 方法獲取一個(gè)connection對(duì)象。
connection對(duì)象類似于數(shù)據(jù)操作過(guò)程中的管道,我們數(shù)據(jù)操作都是在connection之上進(jìn)行的。(有過(guò)網(wǎng)絡(luò)編程經(jīng)驗(yàn)的朋友一下就理解了),然后再通過(guò) cur=conn.cursor() 獲取游標(biāo),游標(biāo)對(duì)象則類似于管道中的載體,進(jìn)行數(shù)據(jù)的傳送。有了cur我們才能直接操作數(shù)據(jù)庫(kù)。
增刪查改:代碼中我們把增刪查改分成四個(gè)函數(shù),事實(shí)上這四個(gè)操作都是調(diào)用cur.execute()進(jìn)行的,也就是直接使用SQL語(yǔ)言進(jìn)行數(shù)據(jù)庫(kù)操作。如果有必要我們應(yīng)該對(duì)它們?cè)俅畏庋b便于使用。具體代碼看上面。
關(guān)閉:最后我們使用 cur.close() conn.close() 分別關(guān)閉游標(biāo)和connection對(duì)象,這樣就結(jié)束了一次數(shù)據(jù)操作。
總結(jié)
這篇文章搭建的是win平臺(tái)下的本地?cái)?shù)據(jù)庫(kù),關(guān)于Linux平臺(tái)的及遠(yuǎn)程數(shù)據(jù)庫(kù)的相關(guān)操作類似。此外環(huán)境配完了更重要的是學(xué)習(xí)掌握SQL語(yǔ)言和最大程度運(yùn)用Python寫出優(yōu)秀的代碼。就這樣啦~