前面我們學(xué)習(xí)了SQLite數(shù)據(jù)庫的相關(guān)內(nèi)容,我們也通過前面的內(nèi)容學(xué)習(xí)到了數(shù)據(jù)庫的相關(guān)操作,PyMySQL數(shù)據(jù)庫的操作和前面的內(nèi)容類似,但我們可以通過Navicat直接來查看數(shù)據(jù)庫中的內(nèi)容,實現(xiàn)數(shù)據(jù)可視化,前面我們已經(jīng)完成了下載安裝,本節(jié)我們直接進入學(xué)習(xí)。
1. 建立數(shù)據(jù)連接
我們要使用數(shù)據(jù)庫就首先要建立數(shù)據(jù)連接,連接的時候我們要使用到connect()函數(shù),這個函數(shù)中有很多參數(shù),我們先通過例子來看一下它的用法:
import pymysql con = pymysql.connect(host = 'localhost', user = 'root',password = '123456',database ='python' ,charset = 'utf8',port = 3306) print('連接成功')
輸出結(jié)果為:
連接成功
參數(shù)的介紹如下:
host:數(shù)據(jù)庫主機名或IP地址。
port:連接數(shù)據(jù)庫的端口號。
user:訪問數(shù)據(jù)賬號。
passwprd或passwd:數(shù)據(jù)庫密碼。
database或db:數(shù)據(jù)庫中的庫名。
charset:編碼方式。
我們輸入的信息一定要和連接的數(shù)據(jù)庫信息保持一致,同時要使數(shù)據(jù)庫處于連接狀態(tài)。
2. 創(chuàng)建數(shù)據(jù)表
連接數(shù)據(jù)庫的方式我們在前面已經(jīng)介紹過,在這里我們直接來通過PyMySQL來創(chuàng)建一個表,它的語法結(jié)構(gòu)和前面類似,我們直接進行使用,看下面代碼:
import pymysql con = pymysql.connect(host = 'localhost', user = 'root',password = '123456', database ='python',charset = 'utf8',port = 3306) print('連接成功') cursor = con.cursor()#創(chuàng)建一個游標 cursor.execute("""create table users ( id varchar(8) primary key, name varchar(18), age varchar(8), gender varchar(2), class varchar(2)) """) cursor.close() con.close()
我們運行之后可以在我們的數(shù)據(jù)庫中刷新一下來查看當(dāng)前表。
我們可以右鍵users然后選擇設(shè)計表來查看表結(jié)構(gòu)或者更改。
3. 增加數(shù)據(jù)
關(guān)于MySQL數(shù)據(jù)庫的操作方式和SQLite基本一樣,我們在再通過一個例子來學(xué)習(xí)一下它的使用方式:
代碼如下:
import pymysql con = pymysql.connect(host = 'localhost', user = 'root',password = '123456',database ='python', charset = 'utf8',port = 3306) print('連接成功->') cursor = con.cursor()#創(chuàng)建一個游標 print('開始創(chuàng)建表->') cursor.execute("""create table users ( id char(8) primary key, name char(18), age char(8), gender char(2), class char(2)) """) print('完成表的創(chuàng)建,開始插入數(shù)據(jù)->')#下面開始插入數(shù)據(jù) cursor.execute("insert into users(id,name,age,gender,class) values('1001','李華','21','男','1')") cursor.execute("insert into users(id,name,age,gender,class) values('1002','小明','21','男','1')") cursor.execute("insert into users(id,name,age,gender,class) values('1003','小張','20','女','2')") print('插入數(shù)據(jù)完成,開始查看數(shù)據(jù)->') cursor.execute('select * from users')#查詢數(shù)據(jù) for row in cursor: print ("id = ", row[0],"name = ", row[1],"age = ", row[2],"gender = ",row[3], "class = ",row[4]) print('查看數(shù)據(jù)完成,開始修改數(shù)據(jù)->')#開始修改數(shù)據(jù) cursor.execute("update users set age = 21 where id=1003") cursor.execute('select * from users')#查詢數(shù)據(jù) for row in cursor: print ("id = ", row[0],"name = ", row[1],"age = ", row[2],"gender = ",row[3], "class = ",row[4]) print('更改數(shù)據(jù)完成,開始刪除數(shù)據(jù)->')#開始刪除數(shù)據(jù) cursor.execute("delete from users where id = 1002;") print('刪除數(shù)據(jù)完成,最后數(shù)據(jù)為->') cursor.execute('select * from users')#查詢數(shù)據(jù) for row in cursor: print ("id = ", row[0],"name = ", row[1],"age = ", row[2],"gender = ",row[3], "class = ",row[4]) cursor.close() con.commit() con.close()
輸出結(jié)果為:
連接成功-> 開始創(chuàng)建表-> 完成表的創(chuàng)建,開始插入數(shù)據(jù)-> 插入數(shù)據(jù)完成,開始查看數(shù)據(jù)-> id = 1001 name = 李華 age = 21 gender = 男 class = 1 id = 1002 name = 小明 age = 21 gender = 男 class = 1 id = 1003 name = 小張 age = 20 gender = 女 class = 2 查看數(shù)據(jù)完成,開始修改數(shù)據(jù)-> id = 1001 name = 李華 age = 21 gender = 男 class = 1 id = 1002 name = 小明 age = 21 gender = 男 class = 1 id = 1003 name = 小張 age = 21 gender = 女 class = 2 更改數(shù)據(jù)完成,開始刪除數(shù)據(jù)-> 刪除數(shù)據(jù)完成,最后數(shù)據(jù)為-> id = 1001 name = 李華 age = 21 gender = 男 class = 1 id = 1003 name = 小張 age = 21 gender = 女 class = 2
數(shù)據(jù)庫中的信息也保持一致,通過這個例子我們使用了前兩節(jié)所學(xué)習(xí)到的內(nèi)容,依次進行了增加、更改及刪除操作。
4. 總結(jié)
關(guān)于數(shù)據(jù)庫的學(xué)習(xí)就到這里,通過本章的內(nèi)容主要讓大家學(xué)習(xí)到Python數(shù)據(jù)庫的兩種編程接口,通過數(shù)據(jù)庫的基礎(chǔ)操作來管理相關(guān)數(shù)據(jù),如果想要了解更深層次的內(nèi)容則需要去學(xué)習(xí)數(shù)據(jù)庫的相關(guān)內(nèi)容。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導(dǎo)課程