攝影網站建設內容品牌推廣的概念
目錄
一、數據庫操作應用場景
二、安裝PyMysql
三、事務的概念
四、數據庫的準備
五、PyMysql連接數據庫
1、建立連接方法?
2、入門案例
六、PyMysql操作數據庫
1、數據庫查詢
1??查詢操作流程
2??cursor游標
?3??查詢常用方法
4??案例
5??異常捕獲
2、數據庫UID
1??更新操作流程
2??案例:增刪改操作
一、數據庫操作應用場景
1、校驗測試數據
- 接口發(fā)送請求后明確會對數據庫中的某個字段進行修改,但響應結果中無該字段數據時。
? ? ? ? ? ? ?如ihrm 刪除員工接口。 is_delete 字段沒有在響應結果中出現! 需要借助數據庫校驗!
2、構造測試數據
- 測試數據使用一次就失效。
? ? ? ? ? ? ?如:ihrm 添加員工接口,使用的手機號!
- 測試前,無法保證測試數據是否存在。
? ? ? ? ? ? ?如:ihrm 查詢員工接口,使用的員工id
二、安裝PyMysql
pip install PyMySQL -i https://pypi.douban.com/simple/
操作步驟:
1. 導包 import pymysql
2. 創(chuàng)建連接。 conn = pymysql.connect(host,port, user, password, database, charset)
3. 獲取游標。 cursor = conn.cursor()
4. 執(zhí)行 SQL。 cursor.execute( ”sql語句“ )
????????查詢語句(select)
????????????????處理結果集(提取數據:fetch*)
????????增刪改語句(insert、update、delete)
????????????????成功:提交事務 conn.commit()
????????????????失敗:回滾事務 conn.rollback()
5. 關閉游標。cursor.close()
6. 關閉連接。conn.close()
三、事務的概念
更詳細的介紹:MySQL數據庫04|內置函數、存儲過程、視圖、事務、索引-CSDN博客?
- 事務,是關系型數據庫(mysql)特有的概念。
- 事務,可以看做一個虛擬的容器,在容器中存放一系列的數據庫操作,看做一個整體。內部的所有操作,要 么都一次性全部成功,只要有一個失敗,就全部失敗!
- 事務操作:只有 2 種情況
? ? ? ? ? ? ?提交:conn.commit()
? ? ? ? ? ? ?回滾: conn.rollback()
四、數據庫的準備
參考資料:
博客資料:看第一部分中的SQL演練文章瀏覽閱讀2.8k次,點贊2次,收藏21次。文章目錄前言# 第一部分:數據庫練習準備數據創(chuàng)建數據表插入數據SQL演練1. SQL語句的強化2. 創(chuàng)建"商品分類"表3. 同步表數據4. 創(chuàng)建“商品品牌表”表5. 同步數據6. 修改表結構7. 外鍵外鍵取消外鍵:其實在設計定義數據庫的時候,就已經確定了要不要使用外鍵:比如下面的邏輯。8. 其實就是多創(chuàng)建一個表,然后從原來的表上使用外鍵進行關聯:下面代碼可以一次性復制粘貼進行聯系# 第二部分:Python 操作 MySQL1. 初嘗python與mysql交互2. pymysql查詢數據庫、面向對象3. p_python mysql數據庫練習https://blog.csdn.net/haojie_duan/article/details/122760852
github代碼:看第7部分的2和3MySQL學習. Contribute to wmh02240/MySQL-Notes development by creating an account on GitHub.https://github.com/wmh02240/MySQL-Notes/tree/master/MySQL%E5%9F%BA%E7%A1%80/7.MySQL%E4%B8%8EPython%E4%BA%A4%E4%BA%92
視頻資料:【數據庫查詢】11-數據庫設計_嗶哩嗶哩_bilibili【數據庫查詢】11-數據庫設計是【python教程】MySQL數據庫的第20集視頻,該合集共計36集,視頻收藏或關注UP主,及時了解更多相關視頻內容。https://www.bilibili.com/video/av56919275?vd_source=6069c4cff3b2c943460de92f0c37ea38&spm_id_from=333.788.videopod.episodes&p=20
五、PyMysql連接數據庫
1、建立連接方法?
conn = pymysql.connect(host="", port=0,
????????????????????????????????????????user="", password="", database="", charset="")
host:數據庫所在主機 IP地址 - string
port:數據庫使用的 端口號 - int
user:連接數據庫使用的 用戶名 - string
password:連接數據庫使用的 密碼 - string
database:要連接的那個數據庫的名字 - string
charset:字符集。常用 utf8 - string
conn:連接數據庫的對 象。
2、入門案例
查詢數據庫,獲取MySQL服務器 版本信息
# 1. 導包
import pymysql# 2. 建立連接
conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")# 3. 獲取游標
cursor = conn.cursor()# 4. 執(zhí)行 sql 語句(查詢)
cursor.execute("select version()")# 5. 獲取結果
res = cursor.fetchone()
print("res =", res[0])# 6. 關閉游標
cursor.close()# 7. 關閉連接
conn.close()
六、PyMysql操作數據庫
- 查詢語法
select 字段1,字段2,... from 表 where 條件;示例:select id,title, pub_date from t_book where title = '讀者';
- 添加語法
insert into 表名(字段1, 字段2, ...) values(值1, 值2, ...);示例:insert into t_book(id, title, pub_date) values(17, '紅樓夢', '2021-11-11');
- 更新語法
update 表名 set 字段名 = 字段值 where 條件示例:update t_book set title = '三國' where id = 17;
- 刪除語法
delete from 表名 where 條件示例:delete from t_book where title = '三國';
1、數據庫查詢
1??查詢操作流程
2??cursor游標
3??查詢常用方法
- fetchone():從結果集中,提取一行。
- fetchmany(size):從結果集中,提取 size 行。
- fetchall():提取所有結果集。
以上三個方法取得的結果都和游標的位置有關,都是從游標的下一個位置開始提取行。?
- 屬性rownumber:可以設置游標位置。想讓游標回到起始位置的話,設置其為0即可。
4??案例
查詢goods表,獲取第一條數據
查詢goods表,獲取前兩條數據
查詢goods表,獲取全部數據
查詢goods表,獲取第3條和第4條 數據
# 1. 導包
import pymysql# 2. 建立連接
conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")# 3. 獲取游標
cursor = conn.cursor() # 指向 0 號位置。# 4. 執(zhí)行 sql 語句(查詢)--- goods
cursor.execute("select * from goods;")# 5. 獲取結果 - 提取第一條
res1 = cursor.fetchone()
print("res1 =", res1)# 修改游標位置:回零
cursor.rownumber = 0
# 5. 獲取結果 - 提取前 2 條
res2 = cursor.fetchmany(2)
print("res2 =", res2)# 修改游標位置:回零
cursor.rownumber = 0
res3 = cursor.fetchall()
print("res3 =", res3)# 修改游標位置:指向第 2 條記錄
cursor.rownumber = 2
res4 = cursor.fetchmany(2)
print("res4 =", res4)# 6. 關閉游標
cursor.close()# 7. 關閉連接
conn.close()
5??異常捕獲
try:嘗試執(zhí)行的代碼
except Exception as err:有錯誤出現時,執(zhí)行的代碼
finally:無論有沒有錯誤,都會執(zhí)行的代碼
# 1. 導包
import pymysql# 定義全局變量,初值為 None
conn = None
cursor = Nonetry:# 2. 建立連接conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")# 3. 獲取游標cursor = conn.cursor() # 指向 0 號位置。# 4. 執(zhí)行 sql 語句(查詢)--- goodscursor.execute("select * from goods;")# 5. 獲取結果 - 提取第一條res1 = cursor.fetchone()print("res1 =", res1)# 修改游標位置:回零cursor.rownumber = 0# 5. 獲取結果 - 提取前 2 條res2 = cursor.fetchmany(2)print("res2 =", res2)# 修改游標位置:回零cursor.rownumber = 0res3 = cursor.fetchall()print("res3 =", res3)# 修改游標位置:指向第 2 條記錄cursor.rownumber = 2res4 = cursor.fetchmany(2)print("res4 =", res4)except Exception as err:print("查詢語句執(zhí)行出錯:", str(err))finally:# 6. 關閉游標cursor.close()# 7. 關閉連接conn.close()
2、數據庫UID
1??更新操作流程
2??案例:增刪改操作
單獨實現如下操作:
①:新增一條商品數據
②:把商品id為22的商品名稱name改為“修改后修改后xxxxx”
③:刪除商品id為22的商品
【補充】pymysql中,事務的開始通常是隱式的。也就是說,當你第一次執(zhí)行 INSERT
、UPDATE
或 DELETE
等操作時,數據庫會自動為你啟動一個事務,而你不需要顯式調用 begin
來開始事務。?
插入數據:
"""
新增一條商品數據
insert into goods values (0,'測試測試測試英寸筆記本',1,1,'2999',default,default);
【注意】插入的第3和4列數據有外鍵約束,必須得是有效的數據,能和另一個表的主鍵對應上
1. 導包
2. 創(chuàng)建連接
3. 獲取游標
4. 執(zhí)行 insert 語句
5. 提交/回滾事務
6. 關閉游標
7. 關閉連接
"""# 1. 導包
import pymysql# 定義全局變量
conn = None
cursor = Nonetry: # 2. 創(chuàng)建連接 conn=pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8") # 3. 獲取游標 cursor = conn.cursor()# 4. 執(zhí)行 insert 語句cursor.execute("insert into goods values (0,'測試測試測試英寸筆記本',1,1,'2999',default,default);")# 查看 sql執(zhí)行,影響多少行 print("影響的行數:", conn.affected_rows())# 5. 提交事務 conn.commit()except Exception as err: print("插入數據錯誤:", str(err)) # 回滾事務 conn.rollback()finally: # 6. 關閉游標 cursor.close() # 7. 關閉連接 conn.close()
修改數據:
"""
把商品id為22的商品名稱name改為“修改后修改后xxxxx”
update goods set name='修改后修改后英寸筆記本' where id=22;1. 導包
2. 建立連接
3. 獲取游標
4. 執(zhí)行 update語句
5. 提交、回滾事務
6. 關閉游標
7. 關閉連接
"""import pymysqlconn = None
cursor = None
try:conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")cursor = conn.cursor()cursor.execute("update goods set name='修改后修改后英寸筆記本' where id=22;")print("影響的行數:",conn.affected_rows())conn.commit()except Exception as err:print("修改數據操作出錯:",str(err))conn.rollback()finally:cursor.close()conn.close()
刪除數據:
"""
刪除id為22的商品信息
delete from goods where id=22;1. 導包
2. 建立連接
3. 獲取游標
4. 執(zhí)行 delete 語句
5. 提交、回滾事務
6. 關閉游標
7. 關閉連接
"""import pymysqlconn = None
cursor = None
try:conn = pymysql.connect(host="localhost", port=3306, user="root",password="123456", database="jingdong", charset="utf8")cursor = conn.cursor()cursor.execute("delete from goods where id=22;")print("影響的行數:",conn.affected_rows())conn.commit()except Exception as err:print("刪除數據操作出錯:",str(err))conn.rollback()finally:cursor.close()conn.close()
全部內容:
PyMysql 01|(包含超詳細項目實戰(zhàn))連接數據庫、增刪改查、異常捕獲-CSDN博客
PyMysql 01|(包含超詳細項目實戰(zhàn))數據庫工具類封裝-CSDN博客?