最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python操作MySQL的詳細教程

 更新時間:2024年10月09日 11:43:59   作者:易辰君  
PyMySQL 是一個純 Python 的庫,用于連接 MySQL 數(shù)據(jù)庫,并執(zhí)行 SQL 語句,該庫的主要用途是通過 Python 代碼與 MySQL 數(shù)據(jù)庫進行交互,比如執(zhí)行查詢、插入數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)等操作,本文介紹了python操作MySQL的詳細教程,需要的朋友可以參考下

前言

PyMySQL 是一個純 Python 的庫,用于連接 MySQL 數(shù)據(jù)庫,并執(zhí)行 SQL 語句。它是 MySQLdb 的替代品,但不同于后者,PyMySQL 不需要 C 語言的依賴,因此更加輕量且易于安裝和使用。該庫的主要用途是通過 Python 代碼與 MySQL 數(shù)據(jù)庫進行交互,比如執(zhí)行查詢、插入數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)等操作。

一、PyMySQL的特點

該庫的特點主要有以下三點:

  • 純 Python 實現(xiàn):不需要依賴 C 擴展庫,可以輕松在各類系統(tǒng)上使用,如 Windows、Linux、macOS 等。

  • 兼容性強:支持 MySQL 5.x 和 MySQL 8.x 版本,也兼容 MariaDB。

  • 易用性:提供了與 MySQLdb 類似的 API,便于用戶從 MySQLdb 遷移過來。

二、安裝

PyMySQL 可以通過 pip 輕松安裝:

pip install pymysql

三、基本用法

(一)連接MySQL數(shù)據(jù)庫

在使用 PyMySQL 之前,你需要先連接到 MySQL 數(shù)據(jù)庫。連接數(shù)據(jù)庫時,通常需要提供數(shù)據(jù)庫的主機地址、用戶名、密碼、數(shù)據(jù)庫名等信息。

示例:

import pymysql
 
# 創(chuàng)建連接
connection = pymysql.connect(
    host='localhost',      # 數(shù)據(jù)庫主機地址
    user='your_username',  # 數(shù)據(jù)庫用戶名
    password='your_password', # 數(shù)據(jù)庫密碼
    database='your_dbname',   # 選擇的數(shù)據(jù)庫
    charset='utf8mb4',     # 指定字符集
    cursorclass=pymysql.cursors.DictCursor  # 返回字典格式的數(shù)據(jù)
)
 
# 創(chuàng)建游標
cursor = connection.cursor()
 
# 關閉游標和連接
cursor.close()
connection.close()

(二)數(shù)據(jù)查詢

使用游標對象來執(zhí)行 SQL 查詢并獲取數(shù)據(jù)。

示例:

try:
    # 創(chuàng)建游標
    with connection.cursor() as cursor:
        # SQL 查詢
        sql = "SELECT * FROM users WHERE age > %s"
        cursor.execute(sql, (25,))  # 使用參數(shù)化查詢防止 SQL 注入
        # 獲取結果
        results = cursor.fetchall()  # 返回所有結果
        for row in results:
            print(row)
finally:
    # 關閉連接
    connection.close()

(三)插入數(shù)據(jù)

執(zhí)行插入操作時,可以使用 execute() 或 executemany() 方法。

示例:

try:
    with connection.cursor() as cursor:
        # SQL 插入語句
        sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)"
        # 執(zhí)行單條插入
        cursor.execute(sql, ('John Doe', 30, 'john.doe@example.com'))
        
        # 執(zhí)行多條插入
        users = [
            ('Alice', 25, 'alice@example.com'),
            ('Bob', 28, 'bob@example.com')
        ]
        cursor.executemany(sql, users)
    
    # 提交更改
    connection.commit()
finally:
    connection.close()

(四)更新和刪除數(shù)據(jù)

類似于插入數(shù)據(jù),更新和刪除數(shù)都是通過 SQL 語句和 execute() 函數(shù)來完成。

  • 更新數(shù)據(jù)

示例:

try:
    with connection.cursor() as cursor:
        # SQL 更新語句
        sql = "UPDATE users SET email = %s WHERE name = %s"
        cursor.execute(sql, ('new.email@example.com', 'John Doe'))
    
    # 提交更改
    connection.commit()
finally:
    connection.close()
  • 刪除數(shù)據(jù)

示例:

try:
    with connection.cursor() as cursor:
        # SQL 刪除語句
        sql = "DELETE FROM users WHERE name = %s"
        cursor.execute(sql, ('John Doe',))
    
    # 提交更改
    connection.commit()
finally:
    connection.close()

(五)事務管理

MySQL 數(shù)據(jù)庫支持事務,PyMySQL 默認啟用了自動提交。如果你需要手動控制事務,可以關閉自動提交并在合適的時機提交或回滾。

示例:

try:
    # 關閉自動提交
    connection.autocommit(False)
 
    with connection.cursor() as cursor:
        # SQL 插入語句
        sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)"
        cursor.execute(sql, ('Chris', 27, 'chris@example.com'))
 
        # 人為錯誤,測試回滾
        raise Exception("人為觸發(fā)異常")
 
    # 提交事務
    connection.commit()
except Exception as e:
    print(f"出現(xiàn)錯誤: {e}")
    # 回滾事務
    connection.rollback()
finally:
    connection.close()

四、游標類型

PyMySQL 提供了多種游標類型,適用于不同的場景:

  • 默認游標:返回元組格式的結果。

  • 字典游標 (DictCursor):返回字典格式的結果,字段名作為鍵。

  • SSCursor:流式游標,用于處理大數(shù)據(jù)量時,避免一次性加載大量數(shù)據(jù)到內存。

使用不同游標類型可以通過 cursorclass 參數(shù)指定。例如:

# 字典游標
connection = pymysql.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_dbname',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor  # 使用字典游標
)

五、安全性

為了防止 SQL 注入攻擊,務必使用參數(shù)化查詢,而不是將參數(shù)直接拼接到 SQL 字符串中。

示例:

# 不安全的寫法
sql = f"SELECT * FROM users WHERE name = '{name}'"  # 容易導致 SQL 注入
 
# 安全的寫法
sql = "SELECT * FROM users WHERE name = %s"
cursor.execute(sql, (name,))

六、常見錯誤處理

PyMySQL 中常見的錯誤處理可以通過捕獲異常來完成:

import pymysql
 
try:
    connection = pymysql.connect(host='localhost', user='root', password='', database='test_db')
    cursor = connection.cursor()
except pymysql.MySQLError as e:
    print(f"數(shù)據(jù)庫連接失敗: {e}")

七、性能優(yōu)化

  • 使用批量操作:如插入數(shù)據(jù)時,使用 executemany() 批量插入,減少數(shù)據(jù)庫的交互次數(shù)。

  • 連接池:在大規(guī)模應用中,可以通過第三方庫如 DBUtils 或 SQLAlchemy 提供的連接池來優(yōu)化數(shù)據(jù)庫連接的復用性。

  • 流式查詢:對于大規(guī)模查詢,使用 SSCursor 流式游標,避免一次性加載所有數(shù)據(jù)到內存。

八、總結

PyMySQL 是一個輕量級、易于使用的 Python 庫,適合 Python 程序員與 MySQL 數(shù)據(jù)庫進行交互。通過它,你可以高效地執(zhí)行 SQL 查詢、插入、更新和刪除數(shù)據(jù)操作,同時還可以利用其事務支持、游標控制等高級功能。

以上就是python操作MySQL的詳細教程的詳細內容,更多關于python操作MySQL的資料請關注腳本之家其它相關文章!

相關文章

  • PyTorch的張量tensor和自動求導autograd詳解

    PyTorch的張量tensor和自動求導autograd詳解

    這篇文章主要介紹了PyTorch的張量tensor和自動求導autograd,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python正則表達中re模塊的使用

    Python正則表達中re模塊的使用

    這篇文章主要介紹了Python正則表達中re模塊的使用,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • Python查找算法之分塊查找算法的實現(xiàn)

    Python查找算法之分塊查找算法的實現(xiàn)

    這篇文章主要介紹了Python查找算法之分塊查找算法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • opencv-python圖像處理安裝與基本操作方法

    opencv-python圖像處理安裝與基本操作方法

    OpenCV是一個C++庫,目前流行的計算機視覺編程庫,用于實時處理計算機視覺方面的問題,它涵蓋了很多計算機視覺領域的模塊。在Python中常使用OpenCV庫實現(xiàn)圖像處理。本文介紹opencv-python圖像處理安裝與基本操作,感興趣的朋友一起看看吧
    2022-01-01
  • Python中super()函數(shù)簡介及用法分享

    Python中super()函數(shù)簡介及用法分享

    本文給大家分享的是Python中的super函數(shù)的簡單介紹以及用法和注意事項,有需要的小伙伴可以參考下
    2016-07-07
  • 圖解python全局變量與局部變量相關知識

    圖解python全局變量與局部變量相關知識

    這篇文章主要介紹了圖解python全局變量與局部變量相關知識,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Mac上Python使用ffmpeg完美解決方案(避坑必看!)

    Mac上Python使用ffmpeg完美解決方案(避坑必看!)

    ffmpeg是一個強大的開源命令行多媒體處理工具,下面這篇文章主要給大家介紹了關于Mac上Python使用ffmpeg完美解決方案的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Python蛇形方陣的實現(xiàn)

    Python蛇形方陣的實現(xiàn)

    本文主要介紹了Python蛇形方陣的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Python API 自動化實戰(zhàn)詳解(純代碼)

    Python API 自動化實戰(zhàn)詳解(純代碼)

    今天小編就為大家分享一篇Python API 自動化實戰(zhàn)詳解(純代碼),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python條件和循環(huán)的使用方法

    python條件和循環(huán)的使用方法

    下面我們來介紹python條件語句和循環(huán)語句的使用方法。
    2013-11-11

最新評論

彭泽县| 浪卡子县| 封丘县| 乐业县| 东辽县| 翁源县| 蒙自县| 连山| 康保县| 夏津县| 洪江市| 汕头市| 株洲市| 临泉县| 封丘县| 高淳县| 密云县| 蒙自县| 图们市| 科技| 惠来县| 上虞市| 肃北| 新宁县| 津南区| 绥宁县| 襄汾县| 合川市| 称多县| 水富县| 昭苏县| 尤溪县| 温泉县| 福清市| 西充县| 广河县| 福州市| 衡南县| 凤冈县| 张家口市| 尚志市|