首頁(yè)技術(shù)文章正文

pymysql庫(kù)常用對(duì)象用法

更新時(shí)間:2020-12-10 來(lái)源:黑馬程序員 瀏覽量:

pymysql庫(kù)中提供了兩個(gè)常用的對(duì)象:Connection對(duì)象和Cursor對(duì)象。

1. Connection對(duì)象

Connection對(duì)象用于建立與MySQL數(shù)據(jù)庫(kù)的連接,可以通過(guò)以下方法創(chuàng)建:

connect(參數(shù)列表)

以上方法中的常用參數(shù)及其含義如下:

·參數(shù)host,數(shù)據(jù)庫(kù)所在主機(jī)的IP主機(jī)地址,若數(shù)據(jù)庫(kù)位于本機(jī),可設(shè)為localhost。

·參數(shù)port,數(shù)據(jù)庫(kù)占用的端口,默認(rèn)是3306。

·參數(shù)database ,表示數(shù)據(jù)庫(kù)的名稱。

·參數(shù)user,連入數(shù)據(jù)庫(kù)時(shí)使用的用戶名。

·參數(shù)password ,用戶密碼。

·參數(shù)charset,表示通信采用的編碼方式,推薦使用utf8。

使用connect()方法向本地?cái)?shù)據(jù)庫(kù)建立連接,示例代碼如下:

conn = pymysql.connect( 
    host='localhost',
    user='root',
    password ='123456',
    database ='dbtest',
    charset='utf8')

pymysql庫(kù)為Connection對(duì)象提供了一些實(shí)現(xiàn)了數(shù)據(jù)庫(kù)操作的常用方法,這些方法的說(shuō)明如表1所示。

表1 Connection對(duì)象的常用方法

方法說(shuō)明
close()關(guān)閉連接
commit()提交當(dāng)前事務(wù)
rollback()回滾當(dāng)前事務(wù)。事務(wù)回滾是指,事務(wù)在運(yùn)行過(guò)程中因發(fā)生某種故障而不能繼續(xù)執(zhí)行,使得系統(tǒng)將事務(wù)中對(duì)數(shù)據(jù)庫(kù)的所有已完成的更新操作全部撤銷(xiāo),將數(shù)據(jù)庫(kù)返回到事務(wù)開(kāi)始時(shí)的狀態(tài)。
cursor()創(chuàng)建并返回Cursor對(duì)象


2. Cursor對(duì)象

Cursor對(duì)象即游標(biāo)對(duì)象,它主要負(fù)責(zé)執(zhí)行SQL語(yǔ)句。Cursor對(duì)象通過(guò)調(diào)用Connection對(duì)象的cursor()方法創(chuàng)建。使用上文創(chuàng)建的Connection對(duì)象conn獲得游標(biāo)對(duì)象,示例代碼如下:

cs_obj = conn.cursor()

Cursor對(duì)象的常用屬性和方法分別如表2和表3所示。

表2 Cursor對(duì)象的常用屬性

屬性說(shuō)明
rowcount獲取最近一次execute()執(zhí)行后受影響的行數(shù)
connection獲得當(dāng)前連接對(duì)象

表3 Cursor對(duì)象的常用方法

方法說(shuō)明
close()關(guān)閉游標(biāo)
execute(query, args=None)執(zhí)行SQL語(yǔ)句,返回受影響的行數(shù)
fetchall()執(zhí)行SQL查詢語(yǔ)句,將結(jié)果集(符合SQL語(yǔ)句中條件的所有行集合)中的每行轉(zhuǎn)化為一個(gè)元組,再將這些元組裝入一個(gè)元組返回
fetchone()執(zhí)行SQL查詢語(yǔ)句,獲取下一個(gè)查詢結(jié)果集

多學(xué)一招:SQL語(yǔ)句

SQL(全稱Structure Query Language)是結(jié)構(gòu)化查詢語(yǔ)言,也是目前應(yīng)用較廣泛的用于訪問(wèn)和操作關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,具有易學(xué)易用、功能豐富的特點(diǎn)。下面將對(duì)基礎(chǔ)的SQL語(yǔ)句進(jìn)行介紹。

(1)創(chuàng)建數(shù)據(jù)庫(kù)

創(chuàng)建數(shù)據(jù)庫(kù)使用“create database”語(yǔ)句,語(yǔ)法格式如下:

create database 數(shù)據(jù)庫(kù)名稱

創(chuàng)建數(shù)據(jù)庫(kù)dbtest的示例如下:

create database dbtest


(2)刪除數(shù)據(jù)庫(kù)

刪除數(shù)據(jù)庫(kù)使用“drop database”語(yǔ)句,語(yǔ)法格式如下:

drop database 數(shù)據(jù)庫(kù)名稱

刪除數(shù)據(jù)庫(kù)dbtest的示例如下:

drop database dbtest


(3)創(chuàng)建表

創(chuàng)建表使用“create table”語(yǔ)句,語(yǔ)法格式如下:

create table 表名稱(
    字段名 字段類型 [約束],
    字段名 字段類型 [約束],
    ......
    字段名 字段類型 [約束]
)


MySQL支持的字段類型很豐富,主要包括數(shù)值、日期和字符串類型。其中常見(jiàn)的數(shù)值類型有int、double、float等,常見(jiàn)的日期類型有date、time、year,常見(jiàn)的字符串類型有char和varchar。在設(shè)計(jì)數(shù)據(jù)表的字段時(shí),可以為其添加約束,例如,primary key用于設(shè)置某個(gè)字段為主鍵,unique用于設(shè)置某個(gè)字段的值唯一,not null用于設(shè)置某個(gè)字段不能有空值。

在之前創(chuàng)建的數(shù)據(jù)庫(kù)dbtest中創(chuàng)建數(shù)據(jù)表users,示例如下:

use dbtest; # 使用dbtest數(shù)據(jù)庫(kù)
create table users(
    UserID int primary key, # UserID字段被設(shè)置為主鍵
    UserName varchar(20) unique, # UserName的值是惟一的,不能重復(fù)
    UserPwd varchar(20) not null # UserPwd字段的值不能為空
)


(4)數(shù)據(jù)的增加

增加數(shù)據(jù)使用“insert into”語(yǔ)句實(shí)現(xiàn),語(yǔ)法格式如下:

insert into table_name (字段1, 字段2,......字段n)
    values (值1, 值2, ......值n);
    例如,向users表里添加2行數(shù)據(jù):
    insert into users(userid,username,userpwd)
    values(1,'xiaoMing','123456');
    insert into users(userid,username,userpwd)
    values(2,'xiaoHong','654321');


(5) 數(shù)據(jù)的刪除

刪除數(shù)據(jù)指從數(shù)據(jù)庫(kù)中將記錄徹底刪除,使用“delete”語(yǔ)句和where子句實(shí)現(xiàn),語(yǔ)法格式如下:

delete from 表名稱 where 條件

例如,從users表中將第1條數(shù)據(jù)刪除:

delete from users where UserID = 1


(6) 數(shù)據(jù)的更新

更新數(shù)據(jù)使用“update”語(yǔ)句和where子句實(shí)現(xiàn),語(yǔ)法格式如下:

update 表名稱
    set 字段1 = 數(shù)值1,
    字段2 = 數(shù)值2,
    字段3 = 數(shù)值3.. ..
    where 條件

例如,將表users中UserID為1的用戶名稱改為“小華”:

update users set UserName = "小華" where UserID = 1


(7) 數(shù)據(jù)的查詢

查詢數(shù)據(jù)使用“select”語(yǔ)句實(shí)現(xiàn),語(yǔ)法格式如下:

select 字段1,字段2,......字段n from 表名稱


還可以使用select語(yǔ)句和where子句實(shí)現(xiàn)條件查詢,語(yǔ)法格式如下:

select 字段1,字段2,......字段n from 表名稱 where 條件

例如,從users表中查詢所有的數(shù)據(jù):

use dbtest;
select * from users


猜你喜歡:

Scrapy框架的工作原理是什么?

如何做數(shù)據(jù)分析?數(shù)據(jù)分析有什么作用?

緩存穿透及解決方案

Python+數(shù)據(jù)分析培訓(xùn)課程


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!