Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)
PyMysql簡(jiǎn)介
PyMysql是Python中用于連接MySQL數(shù)據(jù)庫(kù)的一個(gè)第三方庫(kù),它實(shí)現(xiàn)了MySQL客戶端/服務(wù)器協(xié)議,使得Python程序能夠與MySQL服務(wù)器進(jìn)行交互。由于Python2的mysql-python(又稱mysqldb)模塊在Python 3上支持不夠完善,因此pymysql成為了在Python3.x環(huán)境中一個(gè)流行的替代方案。
PyMysql的主要特點(diǎn)和功能:
- 兼容性:pymysql與Python 3完全兼容,并且可以在Python
2.7及更高版本上運(yùn)行,為跨Python版本的應(yīng)用提供統(tǒng)一的MySQL數(shù)據(jù)庫(kù)操作接口。 - API設(shè)計(jì):提供了類似DB-API 2.0規(guī)范的接口,使得開(kāi)發(fā)者可以使用熟悉的執(zhí)行SQL語(yǔ)句、獲取結(jié)果集等方法。
- 安全連接:支持安全的SSL加密連接到MySQL服務(wù)器。
- 事務(wù)處理:通過(guò)commit()和rollback()方法支持事務(wù)控制。
- 參數(shù)化查詢:允許使用占位符(%s)進(jìn)行參數(shù)化SQL查詢,有效防止SQL注入攻擊。
- 多結(jié)果集:對(duì)于支持多結(jié)果集的MySQL命令,如存儲(chǔ)過(guò)程,pymysql也能夠正確處理。
基本用法步驟:
- 安裝pymysql(通常使用pip install pymysql)
- 創(chuàng)建數(shù)據(jù)庫(kù)連接
- 創(chuàng)建游標(biāo)對(duì)象并執(zhí)行SQL語(yǔ)句
- 處理查詢結(jié)果
- 提交或回滾事務(wù)
- 關(guān)閉游標(biāo)和數(shù)據(jù)庫(kù)連接
以下使用PyMysql增刪改查Mysql數(shù)據(jù)庫(kù)
創(chuàng)建數(shù)據(jù)庫(kù)
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `email` varchar(100) NOT NULL, `password` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
連接MySql數(shù)據(jù)庫(kù)
import pymysql # 連接MySQL數(shù)據(jù)庫(kù) db = pymysql.connect("localhost", "your_username", "your_password", "your_database") # 創(chuàng)建一個(gè)游標(biāo)對(duì)象cursor cursor = db.cursor()
查詢數(shù)據(jù)(SELECT)
import pymysql # 連接MySQL數(shù)據(jù)庫(kù) db = pymysql.connect("localhost", "your_username", "your_password", "your_database") # 創(chuàng)建一個(gè)游標(biāo)對(duì)象cursor cursor = db.cursor() try: sql = "SELECT * FROM users WHERE username = %s" val = ("test_user",) cursor.execute(sql, val) results = cursor.fetchall() for row in results: print(f"ID: {row[0]}, Username: {row[1]}, Email: {row[2]}, Password: {row[3]}") except Exception as e: print(f"查詢數(shù)據(jù)失敗: {e}")
插入數(shù)據(jù)(INSERT)
import pymysql # 連接MySQL數(shù)據(jù)庫(kù) db = pymysql.connect("localhost", "your_username", "your_password", "your_database") # 創(chuàng)建一個(gè)游標(biāo)對(duì)象cursor cursor = db.cursor() # 插入數(shù)據(jù)(INSERT) try: sql = "INSERT INTO users (username, email, password) VALUES (%s, %s, %s)" val = ("test_user", "test@example.com", "test_password") cursor.execute(sql, val) db.commit() print("插入數(shù)據(jù)成功") except Exception as e: db.rollback() # 發(fā)生錯(cuò)誤時(shí)回滾 print(f"插入數(shù)據(jù)失敗: {e}")
更新數(shù)據(jù)(UPDATE)
import pymysql # 連接MySQL數(shù)據(jù)庫(kù) db = pymysql.connect("localhost", "your_username", "your_password", "your_database") # 創(chuàng)建一個(gè)游標(biāo)對(duì)象cursor cursor = db.cursor() try: sql = "UPDATE users SET email = %s WHERE username = %s" val = ("new_email@example.com", "test_user") cursor.execute(sql, val) db.commit() print("更新數(shù)據(jù)成功") except Exception as e: db.rollback() print(f"更新數(shù)據(jù)失敗: {e}")
刪除數(shù)據(jù)(DELETE)
import pymysql # 連接MySQL數(shù)據(jù)庫(kù) db = pymysql.connect("localhost", "your_username", "your_password", "your_database") # 創(chuàng)建一個(gè)游標(biāo)對(duì)象cursor cursor = db.cursor() try: sql = "DELETE FROM users WHERE username = %s" val = ("test_user",) cursor.execute(sql, val) db.commit() print("刪除數(shù)據(jù)成功") except Exception as e: db.rollback() print(f"刪除數(shù)據(jù)失敗: {e}")
關(guān)閉連接
cursor.close() db.close()
請(qǐng)確保將上述代碼中的"your_username", “your_password”, "your_database"替換為你的實(shí)際數(shù)據(jù)庫(kù)用戶名、密碼和數(shù)據(jù)庫(kù)名。
到此這篇關(guān)于Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)PyMySql增刪改查Mysql內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django + Uwsgi + Nginx 實(shí)現(xiàn)生產(chǎn)環(huán)境部署的方法
Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比較常見(jiàn)的一種方式。這篇文章主要介紹了Django + Uwsgi + Nginx 實(shí)現(xiàn)生產(chǎn)環(huán)境部署,感興趣的小伙伴們可以參考一下2018-06-06python實(shí)現(xiàn)圖片處理和特征提取詳解
這篇文章主要介紹了python實(shí)現(xiàn)圖片處理和特征提取詳解,文中向大家分享了Python導(dǎo)入圖片,將圖像轉(zhuǎn)化為二維矩陣,模糊化圖片等Python對(duì)圖像的操作,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11python實(shí)現(xiàn)鳶尾花三種聚類算法(K-means,AGNES,DBScan)
這篇文章主要介紹了python實(shí)現(xiàn)鳶尾花三種聚類算法(K-means,AGNES,DBScan),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06PyQt5每天必學(xué)之QSplitter實(shí)現(xiàn)窗口分隔
這篇文章主要介紹了PyQt5每天必學(xué)之窗口分隔,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04Python?Pandas如何獲取和修改任意位置的值(at,iat,loc,iloc)
在我們對(duì)數(shù)據(jù)進(jìn)行選擇之后,需要對(duì)特定的數(shù)據(jù)進(jìn)行設(shè)置更改,設(shè)置,下面這篇文章主要給大家介紹了關(guān)于Python?Pandas如何獲取和修改任意位置的值(at,iat,loc,iloc)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01Python制作簡(jiǎn)易版小工具之計(jì)算天數(shù)的實(shí)現(xiàn)思路
這篇文章主要介紹了Python制作簡(jiǎn)易版小工具之計(jì)算天數(shù)的實(shí)現(xiàn)思路,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02使用 prometheus python 庫(kù)編寫自定義指標(biāo)的方法(完整代碼)
這篇文章主要介紹了使用 prometheus python 庫(kù)編寫自定義指標(biāo)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06