如何使用 Python 連接 MySQL 數據庫?

在Python開發中,連接MySQL數據庫是一個常見的需求。

我們可以使用多種庫來實現這一功能,其中最常用的是mysql-connector-pythonPyMySQL

下面我將詳細介紹如何使用這兩個庫來連接MySQL數據庫,并提供一些實際開發中的建議和注意事項。

1. 使用mysql-connector-python連接MySQL數據庫

mysql-connector-python是MySQL官方提供的Python連接器,支持Python 3.x版本。

安裝

首先,你需要安裝mysql-connector-python庫:

pip install mysql-connector-python
連接數據庫

下面是一個簡單的示例,展示如何連接到MySQL數據庫:

import mysql.connector# 創建數據庫連接
mydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="yourdatabase"
)# 創建游標對象
mycursor = mydb.cursor()# 執行SQL查詢
mycursor.execute("SELECT * FROM yourtable")# 獲取查詢結果
myresult = mycursor.fetchall()for x in myresult:print(x)
注意事項
  1. 錯誤處理:在實際開發中,應該添加錯誤處理機制,以防止數據庫連接失敗或其他異常情況。

    try:
    mydb = mysql.connector.connect(
    host=“localhost”,
    user=“yourusername”,
    password=“yourpassword”,
    database=“yourdatabase”
    )
    except mysql.connector.Error as err:
    print(f"Error: {err}")

  2. 關閉連接:在完成數據庫操作后,應該關閉游標和數據庫連接,以釋放資源。

    mycursor.close()
    mydb.close()

2. 使用PyMySQL連接MySQL數據庫

PyMySQL是一個純Python實現的MySQL客戶端庫,兼容Python 2.x和3.x版本。

安裝

首先,你需要安裝PyMySQL庫:

pip install PyMySQL
連接數據庫

下面是一個簡單的示例,展示如何連接到MySQL數據庫:

import pymysql# 創建數據庫連接
mydb = pymysql.connect(host="localhost",user="yourusername",password="yourpassword",database="yourdatabase"
)# 創建游標對象
mycursor = mydb.cursor()# 執行SQL查詢
mycursor.execute("SELECT * FROM yourtable")# 獲取查詢結果
myresult = mycursor.fetchall()for x in myresult:print(x)
注意事項
  1. 錯誤處理:同樣,應該添加錯誤處理機制。

    try:
    mydb = pymysql.connect(
    host=“localhost”,
    user=“yourusername”,
    password=“yourpassword”,
    database=“yourdatabase”
    )
    except pymysql.MySQLError as err:
    print(f"Error: {err}")

  2. 關閉連接:在完成數據庫操作后,應該關閉游標和數據庫連接。

    mycursor.close()
    mydb.close()

實際開發中的建議
  1. 使用上下文管理器:為了確保資源被正確釋放,可以使用上下文管理器(with語句)來管理數據庫連接和游標。

    import mysql.connector

    with mysql.connector.connect(
    host=“localhost”,
    user=“yourusername”,
    password=“yourpassword”,
    database=“yourdatabase”
    ) as mydb:
    with mydb.cursor() as mycursor:
    mycursor.execute(“SELECT * FROM yourtable”)
    myresult = mycursor.fetchall()
    for x in myresult:
    print(x)

  2. 參數化查詢:為了避免SQL注入攻擊,應該使用參數化查詢。

    import mysql.connector

    with mysql.connector.connect(
    host=“localhost”,
    user=“yourusername”,
    password=“yourpassword”,
    database=“yourdatabase”
    ) as mydb:
    with mydb.cursor() as mycursor:
    sql = “SELECT * FROM yourtable WHERE id = %s”
    val = (1,)
    mycursor.execute(sql, val)
    myresult = mycursor.fetchall()
    for x in myresult:
    print(x)

  3. 連接池:在高并發環境下,可以使用連接池來管理數據庫連接,提高性能。

    from mysql.connector.pooling import MySQLConnectionPool

    pool = MySQLConnectionPool(
    pool_name=“mypool”,
    pool_size=5,
    host=“localhost”,
    user=“yourusername”,
    password=“yourpassword”,
    database=“yourdatabase”
    )

    with pool.get_connection() as mydb:
    with mydb.cursor() as mycursor:
    mycursor.execute(“SELECT * FROM yourtable”)
    myresult = mycursor.fetchall()
    for x in myresult:
    print(x)

在Python中連接MySQL數據庫,可以使用mysql-connector-pythonPyMySQL庫。無論使用哪個庫,都應該注意以下幾點:

  1. 錯誤處理:添加錯誤處理機制,以防止異常情況。
  2. 關閉連接:在完成數據庫操作后,關閉游標和數據庫連接。
  3. 使用上下文管理器:使用上下文管理器來管理資源。
  4. 參數化查詢:使用參數化查詢來防止SQL注入攻擊。
  5. 連接池:在高并發環境下,使用連接池來提高性能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71882.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71882.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71882.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Apache DolphinScheduler系列1-單節點部署及測試報告

文章目錄 整體說明一、部署環境二、版本號三、部署方案四、部署步驟4.1、上傳部署包4.2、創建外部數據庫4.3、修改元數據庫配置4.4、上傳MySQLl驅動程序4.5、初始化外部數據庫4.6、啟停服務4.7、訪問頁面五、常見問題及解決方式5.1、時間不一致5.2、異常終止5.3、大量日志5.4、…

LLM之論文閱讀——Context Size對RAG的影響

前言 RAG 系統已經在多個行業中得到廣泛應用,尤其是在企業內部文檔查詢等場景中。盡管 RAG 系統的應用日益廣泛,關于其最佳配置的研究卻相對缺乏,特別是在上下文大小、基礎 LLM 選擇以及檢索方法等方面。 論文原文: On the Influence of Co…

人工智能(AI):科技新紀元的領航者

摘要 人工智能(AI)作為當今科技領域最具變革性的力量之一,正以驚人的速度重塑著我們的世界。本文旨在全面且專業地介紹人工智能,涵蓋其定義、發展歷程、關鍵技術、應用領域、面臨的挑戰以及未來展望等方面,以期為讀者…

如何防止 Docker 注入了惡意腳本

根據您的描述,攻擊者通過 CentOS 7 系統中的 Docker 注入了惡意腳本,導致自動啟動名為 “masscan” 和 “x86botnigletjsw” 的進程。這些進程可能用于網絡掃描或其他惡意活動。為了解決這一問題,建議您采取以下步驟: 1. 停止并刪…

LLaMA-Factory|微調大語言模型初探索(4),64G顯存微調13b模型

上篇文章記錄了使用lora微調deepseek-7b,微調成功,但是微調llama3-8b顯存爆炸,這次嘗試使用qlora微調HQQ方式量化,微調更大參數體量的大語言模型,記錄下來微調過程,僅供參考。 對過程不感興趣的兄弟們可以直…

詳解 Spring 配置數據源的兩種方式

在 Spring 框架中配置數據源(DataSource)主要有兩種方式: 通過 Setter 注入配置數據源通過 jdbc.properties 配置文件方式 本博文將使用 Druid 作為數據源,其在 Spring 項目中常見且高效。 Druid 被廣泛認為是性能最佳的連接池…

項目進度管理工具:甘特圖與關鍵路徑法(2025實戰指南)

在全球數字化轉型加速的背景下,項目延期率高達42%的現狀倒逼管理者掌握科學的進度管理工具。本文結合2025年最新實踐,深度解析甘特圖與關鍵路徑法的原理及應用,助你構建精準可控的項目進度管理體系。 一、雙劍合璧:工具組合的價值…

RAGS評測后的數據 如何利用influxdb和grafan 進行數據匯總查看

RAGS(通常指相關性、準確性、語法、流暢性)評測后的數據能借助 InfluxDB 存儲,再利用 Grafana 進行可視化展示,實現從四個維度查看數據,并詳細呈現每個問題對應的這四個指標情況。以下是詳細步驟: 1. 環境準備 InfluxDB 安裝與配置 依據自身操作系統,從 InfluxDB 官網下…

詳解Redis如何持久化

引言 本文介紹了 Redis 的兩種持久化方式:RDB 和 AOF。RDB 按時間間隔快照存儲,AOF 記錄寫操作。闡述了它們的配置、工作原理、恢復數據的方法、性能與實踐建議,如降低 fork 頻率、控制內存等,還提到二者可配合使用,最…

HarmonyOS Design 介紹

HarmonyOS Design 介紹 文章目錄 HarmonyOS Design 介紹一、HarmonyOS Design 是什么?1. 設計系統(Design System)2. UI 框架的支持3. 設計工具和資源4. 開發指南5. 與其他設計系統的對比總結 二、HarmonyOS Design 特點 | 應用場景1. Harmon…

PC端-發票真偽查驗系統-Node.js全國發票查詢接口

在現代企業的財務管理中,發票真偽的驗證至關重要。隨著電子發票的普及,假發票問題日益嚴峻,如何高效、準確的對發票進行真偽查驗,已經成為各類企業在日常運營中必須解決的關鍵問題。翔云發票查驗接口做企業財務管理、稅務合規的好…

Java 大視界 -- 基于 Java 的大數據機器學習模型壓縮與部署優化(99)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

算法-圖-數據結構(鄰接矩陣)-BFS廣度優先遍歷

鄰接矩陣廣度優先遍歷(BFS)是一種用于遍歷或搜索圖的算法,以下是具體介紹: 1. 基本概念 圖是一種非線性的數據結構,由頂點和邊組成,可分為無向圖、有向圖、加權圖、無權圖等。鄰接矩陣是表示圖的一種數…

【HDLbits--Comb組合邏輯】

HDLbits--Comb組合邏輯 1.5 組合邏輯1.5 Demo 在 Verilog 中,組合邏輯(Combinational Logic)是指輸出僅依賴于當前輸入的邏輯電路,沒有記憶功能(即沒有狀態存儲)。組合邏輯的特點是: 無時鐘信號…

ARM Cortex-M3 技術解析:核寄存器R1-R15介紹及使用

ARM Cortex-M3 技術解析:核寄存器R1-R15介紹及使用 作為嵌入式開發領域的經典處理器內核,ARM Cortex-M3(CM3)憑借其高效能、低功耗和豐富特性,在工業控制、物聯網、消費電子等領域廣泛應用。而內核寄存器是我們調試代…

python unzip file

要在 Python 中解壓文件并顯示進度,我們需要在解壓過程中跟蹤文件的提取進度。由于 zipfile 模塊本身不直接支持進度顯示,我們可以通過手動計算并使用 tqdm 庫來顯示進度條。 安裝 tqdm 首先,確保你已經安裝了 tqdm 庫,用于顯示…

DeepSeek+Kimi生成高質量PPT

DeepSeek與Kimi生成PPT全流程解析 一、工具分工原理 DeepSeek核心作用:生成結構化PPT大綱(擅長邏輯構建與內容優化)Kimi核心作用:將文本轉換為視覺化PPT(提供模板庫與排版引擎) 二、操作步驟詳解 1. 通…

一文掌握python中正則表達式的各種使用

文章目錄 1. 正則表達式基礎1.1 常用元字符1.2 基本用法 2. 正則表達式高級功能2.1 分組捕獲2.2 命名分組2.3 非貪婪匹配2.4 零寬斷言2.5 編譯正則表達式2.6 轉義字符 3. 常見應用場景3.1 驗證郵箱格式3.2 提取 URL3.3 提取日期3.4 提取HTML中的鏈接3.5 提取HTML中的圖片鏈接3.…

TCP,http,WebSocket

TCP(Transmission Control Protocol,傳輸控制協議)和HTTP(HyperText Transfer Protocol,超文本傳輸協議)都是網絡通信中的重要協議,但它們在網絡協議棧的不同層次上工作,各自負責不同…

Redis|持久化

文章目錄 總體介紹RDB(Redis DataBase)官網介紹案例演示優勢劣勢如何檢查修復 dump.rdb 文件哪些情況下會觸發 RDB 快照如何禁用快照RDB 優化配置項詳解小總結 AOF(Append Only File)官網介紹是什么能干嘛AOF 持久化工作流程AOF 緩…