目錄
知識點
游標
提交事務
檢索數據
回滾
關閉
增刪改查
查詢
新增
修改
刪除
回滾的用法
知識點
游標
在Python中,數據庫游標(cursor)是用于執行SQL語句并檢索數據的對象。游標允許你在數據庫中移動并操作數據。在使用Python進行數據庫編程時,通常首先需要創建一個游標對象。這可以通過連接對象的cursor() 方法來實現
提交事務
在執行對數據庫進行更改的操作后,需要調用連接對象的 commit()?方法來提交這些更改,它會生成一個connect對象,同時函數的參數也是固定好的,以確保它們被永久保存在數據庫中
檢索數據
執行SQL查詢后,可以使用游標的 fetchall()?,fetchone()?,fetchmany() 方法檢索查詢結果
fetchall() | 用于從數據庫游標中獲取所有的查詢結果行,并將其作為一個列表返回;通常用于對結果集不大的查詢或者在確定結果集不會占用太多內存的情況下使用 |
fetchone() | 用于從數據庫游標中獲取下一行的查詢結果;每次調用?fetchone() ,游標會移動到結果集中的下一行,并返回該行的數據。如果到達結果集的末尾,fetchone() ?將返回?None |
fetchmany(size) | 用于從數據庫游標中獲取指定數量(size )的查詢結果行,并將其作為一個列表返回;可以通過指定?size ?參數來控制每次獲取的行數,默認為游標的數組大小(arraysize) |
回滾
在數據庫操作中,"回滾"(Rollback)是指取消或撤銷之前執行的一系列數據庫操作,將數據庫恢復到之前的狀態。在 Python 中進行數據庫查詢的回滾通常涉及使用事務(Transaction)來管理數據庫操作
關閉
關閉操作進行后,無法再進行操作,除非再次連接
# 關閉游標
cursor.close()# 關閉連接
conn.close()
這些是在Python中使用游標進行數據庫操作時的基本操作。游標允許你執行SQL語句、處理結果集,并確保在完成操作后正確提交事務和關閉連接
增刪改查
首先我們要導入mysql相關的包,如果下面有紅色下劃線的話,需要我們進行安裝,我這里是利用的PyCharm,點擊Alt+Enter鍵,選擇安裝Mysql-connector-python模塊
也可以通過pip install mysql-connector-python進行安裝
mysql.connector.connect()
這是 MySQL 官方提供的用于建立數據庫連接的函數。它接受一系列參數,包括數據庫主機名(host)、用戶名(user)、密碼(password)、以及要連接的數據庫(database)名稱
之后我們就可以利用上面學習的內容,進行對數據庫的增刪改查
查詢
import mysql.connectorconn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz'
)# 創建一個游標
cursor = conn.cursor()cursor.execute('select * from users')
rows = cursor.fetchall()
for row in rows:print(row)cursor.close()
conn.close()
事先在zzz數據庫里面添加了一條數據,之后利用sql語句進行查詢,可以看到查詢成功了
新增
import mysql.connectorconn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz'
)cursor = conn.cursor()# 插入語句
cursor.execute('insert into users(name,age,email) values(%s,%s,%s)', ("橙子味熱果汁", 20, "12345678910"))# 提交數據的更改
conn.commit()cursor.close()
conn.close()
可以看到我們用sql語句新增了一條id為2的數據
修改
import mysql.connectorconn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz'
)cursor = conn.cursor()# 更改數據
cursor.execute("update users set age = 18 where id = 1")conn.commit()cursor.close()
conn.close()
可以看到,我們id為 1 的 age 中的數據由原來的20修改為了18
刪除
import mysql.connectorconn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz'
)cursor = conn.cursor()cursor.execute("delete from users where id = 2")conn.commit()cursor.close()
conn.close()
可以看到剛才我們新建id為2的數據被刪除掉了
回滾的用法
import mysql.connectortry:# 連接到 MySQL 數據庫conn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz')# 創建一個游標對象cursor = conn.cursor()# 開始事務conn.start_transaction()# 執行一系列數據庫操作cursor.execute("INSERT INTO users (name, age, email) VALUES ('John', 30, '666')")cursor.execute("UPDATE users SET age = 31 WHERE name = 'John'")# 模擬發生錯誤,例如除零錯誤# 由于錯誤發生在事務中,因此可以回滾事務并撤銷之前的操作1 / 0# 提交事務(如果沒有發生錯誤)conn.commit()except Exception as e:print("An error occurred:", e)# 回滾事務以撤銷之前的操作conn.rollback()finally:# 關閉游標和連接cursor.close()conn.close()