更新時(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
猜你喜歡:
如何做數(shù)據(jù)分析?數(shù)據(jù)分析有什么作用?
Python連接Mysql數(shù)據(jù)庫(kù)需要安裝什么模塊?
2020-12-10redis緩存原理與實(shí)現(xiàn):為什么redis可以做緩存?【python面試題】
2020-11-30如何用redis緩存廣告數(shù)據(jù)?【Python面試題】
2020-11-30Python開(kāi)發(fā)面試題目:如何優(yōu)化數(shù)據(jù)庫(kù)?
2020-11-30Windows系統(tǒng)安裝Anaconda教程【圖文教程】
2020-11-30數(shù)據(jù)分析的流程是什么?如何做數(shù)據(jù)分析?
2020-11-30