pymysql 的使用以及 commit 與roback


"""
問題:
如何能在python中去使用數據庫存取數據?
使用pymysql模塊

"""

import pymysql

"""pymysql使用步驟
核心類 Connect鏈接用 和Cursor讀寫用
1.與數據庫服務器建立鏈接
2.獲取游標對象 (用於發送和接收數據)
3.用游標執行sql語句
4.使用fetch方法來獲取執行的結果
5.關閉鏈接 先關游標 再關鏈接

游標的常用方法
1.創建游標 conn.cursor(指定查詢結果的數據類型)
2.excute 執行sql
3.fetchone(當sql只有一條記錄時) many(sql有多條並且需要指定條數) all(多條)
4.scroll 用於修改游標的當前位置


注意: pymysql 默認不提交修改 但是注意(指的是對表中記錄的操作不提交) 像刪庫 刪表 是無法撤銷的


"""
# 創建鏈接得到一個鏈接對象
conn = pymysql.Connect(
host="127.0.0.1", # 數據庫服務器主機地址
user="root", # 用戶名
password="admin", # 密碼
database="day42", #數據庫名稱
port=3306, # 端口號 可選 整型
charset="utf8" # 編碼 可選
)
# 獲取游標對象 pymysql.cursors.DictCursor指定 返回的結果類型 為字典 默認是元祖類型
cursor = conn.cursor(pymysql.cursors.DictCursor)

# 查詢數據
sql = "select *from emp"

# 執行sql 如果是select 語句返回的是 查詢的條數
res = cursor.execute(sql)
print(res)

# 獲取查詢的結果
# print(cursor.fetchall())
# print(cursor.fetchone())
# print(cursor.fetchone())
# print(cursor.fetchmany(1))
# print(cursor.fetchall())

# scroll
print(cursor.fetchone())
cursor.scroll(-1)
print(cursor.fetchall())


# 關閉鏈接
cursor.close()
conn.close()


#########################################################################################
#########################################################################################
## commit 提交確認
##roback 回滾 就是返回上一步操作的結果

import pymysql
# 創建鏈接得到一個鏈接對象
conn = pymysql.Connect(
host="127.0.0.1", # 數據庫服務器主機地址
user="root", # 用戶名
password="admin", # 密碼
database="day42", #數據庫名稱
port=3306, # 端口號 可選 整型
charset="utf8" # 編碼 可選
)
# 獲取游標對象 pymysql.cursors.DictCursor指定 返回的結果類型 為字典 默認是元祖類型
cursor = conn.cursor(pymysql.cursors.DictCursor)

# # 添加數據
# res = cursor.execute("insert into emp values(100,'胡歌','男',30,1,'job',60000)")
# if res:
# print("插入成功")
# else:
# print("插入失敗")


# 提交修改 因為pymysql 模塊默認是啟用事務的 你的sql語句 如果不提交 相當於沒有執行

# conn.commit()
# res = cursor.execute("drop database day42")


# res = cursor.execute("delete from t1 where id = 1")
# print(res)

try:
cursor.execute("update moneyTable set money = money - 50 where name = '小明'")
#如果小花的賬戶出問題了 無法更新數據 那就需要回滾
cursor.execute("update moneyTable set money = money + 50 where name = '小花'")
conn.commit()
except:
conn.rollback()



cursor.close()
conn.close()

# 小明有100塊 准備給小花轉50
# update moneyTable set money = money - 50 where name = "小明";
# 發生一些別錯誤 如果發生了錯誤 就執行撤銷操作 rollback;
# update moneyTable set money = money + 50 where name = "小花";

















免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM