欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python連接MySQL數(shù)據(jù)庫的四種方法

 更新時間:2024年08月06日 11:35:16   作者:xjt921122  
用?Python?連接到?MySQL?數(shù)據(jù)庫的方法不是很系統(tǒng),實際中有幾種不同的連接方法,而且不是所有的方法都能與不同的操作系統(tǒng)很好地配合,本文涵蓋了四種方法,你可以用它們來連接你的Python應(yīng)用程序和MySQL,需要的朋友可以參考下

前言

用 Python 連接到 MySQL 數(shù)據(jù)庫的方法不是很系統(tǒng),實際中有幾種不同的連接方法,而且不是所有的方法都能與不同的操作系統(tǒng)很好地配合。除此之外,啟用SSL也是一個挑戰(zhàn)。

本文涵蓋了四種方法,你可以用它們來連接你的Python應(yīng)用程序和MySQL。這些例子將使用PlanetScale,一個用于MySQL的無服務(wù)器數(shù)據(jù)庫平臺。

本文將涵蓋以下連接方法:

  • mysqlclient

  • mysql-connector-python

  • PyMySQL

  • aiomysql

設(shè)置PlanetScale

如果你需要一個免費的數(shù)據(jù)庫來測試你的連接,PlanetScale是一個很好的選擇。PlanetScale建立在Vitess之上,為你提供一個熟悉的工作流程分支來測試和部署不同模式。

Vitess建于2010年,用于解決YouTube的擴展問題。從那時起,這個開源項目持續(xù)增長,現(xiàn)在幫助一些公司,如Slack和Square處理他們的大規(guī)模數(shù)據(jù)擴展需求。

你可以從下面注冊一個賬戶,獲得一個免費的5GB數(shù)據(jù)庫。

https://auth.planetscale.com/sign-up

創(chuàng)建一個數(shù)據(jù)庫

當(dāng)你進入PlanetScale的儀表板。

  • 在你的組織概覽儀表板上點擊 “創(chuàng)建新數(shù)據(jù)庫”。

  • 給你的數(shù)據(jù)庫起個名字。

  • 從下拉菜單中選擇一個區(qū)域。

  • 點擊創(chuàng)建數(shù)據(jù)庫。

你的數(shù)據(jù)庫將被創(chuàng)建為一個主要的開發(fā)分支。你可以在這里進行模式修改,一旦你準備好了,就可以把它推廣到生產(chǎn)中。

獲取連接憑證

要生成連接憑證,必須做到以下步驟:

  • 在你的數(shù)據(jù)庫概覽頁面上點擊 “連接”。

  • 從 "連接方式 "下拉菜單中選擇 “Python”。

  • 將憑證復(fù)制到你的Python應(yīng)用程序文件夾中的.env文件。

為了確保連接的安全性,PlanetScale使用了來自證書頒發(fā)機構(gòu)(CA)的證書,它是幾乎所有平臺上的系統(tǒng)根的一部分。當(dāng)連接到數(shù)據(jù)庫時,你必須指定你信任的CA證書的路徑。注意,這個路徑取決于你的平臺。這里有一個跨越各種操作系統(tǒng)和發(fā)行版的常見路徑列表。

https://planetscale.com/docs/concepts/secure-connections#ca-root-configuration

如果你從PlanetScale儀表板上復(fù)制了證書,你已經(jīng)完成這一步,因為PlanetScale會自動檢測你的操作系統(tǒng)。

如果你使用的是Windows系統(tǒng),你需要下載根證書,然后用你所使用的驅(qū)動程序的正確配置選項指向它們的位置。

用mysqlclient連接到MySQL

mysqlclient包是用于MySQL的最流行的Python包之一。它包含MySQLdb模塊,一個提供Python數(shù)據(jù)庫API的MySQL接口。

首先安裝mysqlclient。你可以通過兩種方式來完成這件事。

  • 使用來自MySQL官方網(wǎng)站的安裝程序,它與你正在運行的操作系統(tǒng)和SQL版本相匹配。

  • 使用 pip 來安裝它。

pip install mysqlclient  

在Linux上,你可能需要在安裝mysqlclient之前安裝Python3和MySQL開發(fā)頭文件和庫。

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential  

一旦你安裝了mysqlclient,你可以使用下面的代碼連接到數(shù)據(jù)庫。

import os  
import MySQLdb # import the MySQLdb module  
from dotenv import load_dotenv  
load_dotenv()  
  
# Create the connection object  
connection = MySQLdb.connect(  
    host=os.getenv("HOST"),  
    user=os.getenv("USERNAME"),  
    passwd=os.getenv("PASSWORD"),  
    db=os.getenv("DATABASE"),  
    ssl_mode="VERIFY_IDENTITY",  
    ssl={  
        'ca': os.getenv("SSL_CERT")  
    }  
)  
  
# Create cursor and use it to execute SQL command  
cursor = connection.cursor()  
cursor.execute("select @@version")  
version = cursor.fetchone()  
  
if version:  
    print('Running version: ', version)  
else:  
    print('Not connected.')  

注意,你必須安裝 python-dotenv 并導(dǎo)入 os 模塊以訪問.env 文件中的數(shù)據(jù)庫憑證。

Windows用戶要注意,從wheel輪子文件中安裝的mysqlclient不支持ssl模式。由于你想確保數(shù)據(jù)庫連接是安全的,我們建議使用另一個驅(qū)動,比如mysql-connector-python。

這個例子使用連接來獲取數(shù)據(jù)庫的SQL版本,然后關(guān)閉連接。

其余的連接方法的語法與這個例子幾乎相同。這種類似的語法源于 Python 數(shù)據(jù)庫 API 規(guī)范 (PEP 249),它鼓勵用于訪問數(shù)據(jù)庫的 Python 模塊之間的一致性。

用MySQL connector連接到MySQL

MySQL connector/Python模塊是Oracle支持的官方驅(qū)動,用于通過Python連接MySQL。該連接器完全是Python語言,而mysqlclient是用C語言編寫的。它也是獨立的,意味著它不需要MySQL客戶端庫或標(biāo)準庫以外的任何Python模塊。

注意,MySQL Connector/Python不支持舊的MySQL服務(wù)器認證方法,這意味著4.1之前的MySQL版本不能工作。

首先安裝mysql-connector-python模塊。建議使用pip來安裝它。

pip install mysql-connector-python  

安裝后,使用以下代碼連接到MySQL:

import os  
from dotenv import load_dotenv  
from mysql.connector import Error  
import mysql.connector  
  
load_dotenv()  
  
connection = mysql.connector.connect(  
host=os.getenv("HOST"),  
database=os.getenv("DATABASE"),  
user=os.getenv("USERNAME"),  
password=os.getenv("PASSWORD"),  
ssl_ca=os.getenv("SSL_CERT")  
)  
  
try:  
    if connection.is_connected():  
        cursor = connection.cursor()  
    cursor.execute("select @@version ")  
    version = cursor.fetchone()  
    if version:  
        print('Running version: ', version)  
    else:  
        print('Not connected.')  
except Error as e:  
    print("Error while connecting to MySQL", e)  
finally:  
    connection.close()  

用PyMySQL連接到MySQL

PyMySQL包是另一個連接器,你可以用它來連接Python和MySQL。如果你追求速度,這是一個很好的選擇,因為它比mysql-connector-python快。

你可以使用 pip 來安裝它。

pip install PyMySQL  

然后,使用以下連接代碼。

from dotenv import load_dotenv  
import pymysql  
import os  
load_dotenv()  
connection = pymysql.connect(  
    host=os.getenv("HOST"),  
    database=os.getenv("DATABASE"),  
    user=os.getenv("USERNAME"),  
    password=os.getenv("PASSWORD"),  
    ssl_ca=os.getenv("SSL_CERT")  
)  
cursor = connection.cursor()  
cursor.execute("select @@version ")  
version = cursor.fetchone()  
if version:  
    print('Running version: ', version)  
else:  
    print('Not connected.')  
connection.close()  

用aiomysql連接到MySQL

aiomysql庫用于從asyncio框架訪問MySQL數(shù)據(jù)庫。除了是異步的特性之外,連接代碼與PyMySQL相似。注意,使用aiomysql需要Python 3.7以上版本和PyMySQL。

要使用aiomysql,首先要用安裝異步模塊。

pip install asyncio  

然后,用以下方法安裝aiomysql。

pip install aiomysql 

然后你可以使用以下代碼連接到MySQL。

import os  
import asyncio  
import aiomysql  
import ssl  
  
from dotenv import load_dotenv  
load_dotenv()  
  
ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)  
ctx.load_verify_locations(cafile=os.getenv("SSL_CERT"))  
  
loop = asyncio.get_event_loop()  
  
async def connect_db():  
   connection = await aiomysql.connect(  
       host=os.getenv("HOST"),  
       port=3306,  
       user=os.getenv("USERNAME"),  
       password=os.getenv("PASSWORD"),  
       db=os.getenv("DATABASE"),  
       loop=loop,  
       ssl=ctx  
   )  
   cursor = await connection.cursor()  
   await cursor.execute("select @@version")  
   version = await cursor.fetchall()  
   print('Running version: ', version)  
   await cursor.close()  
   connection.close()  
loop.run_until_complete(connect_db())  

總結(jié)

在數(shù)據(jù)庫中保存數(shù)據(jù)是應(yīng)用程序的共同特征之一。像Python一樣,大多數(shù)編程語言支持與不同數(shù)據(jù)庫的連接和交互。

本教程探討了Python與MySQL的連接。我們分享了可以使用的四種不同的常用連接方法,并在PlanetScale數(shù)據(jù)庫上使用SSL對它們進行了測試,這是一個關(guān)鍵的步驟,因為它可以防止中間人攻擊。我們回顧了每個連接方式的連接器是如何工作的,并展示了運行它所需的代碼?,F(xiàn)在你已經(jīng)完成了這個實踐概述,你已經(jīng)準備好將MySQL數(shù)據(jù)庫連接到Python應(yīng)用程序中了。

以上就是Python連接MySQL數(shù)據(jù)庫的四種方法的詳細內(nèi)容,更多關(guān)于Python連接MySQL的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python制作詞云的方法

    Python制作詞云的方法

    這篇文章主要為大家詳細介紹了Python制作詞云的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python 3.6 tkinter+urllib+json實現(xiàn)火車車次信息查詢功能

    python 3.6 tkinter+urllib+json實現(xiàn)火車車次信息查詢功能

    這篇文章主要介紹了python 3.6 tkinter+urllib+json 火車車次信息查詢功能,本文以查詢火車車次至南京的信息為例,需要的朋友可以參考下
    2017-12-12
  • python編程調(diào)用設(shè)備串口發(fā)送數(shù)據(jù)方式

    python編程調(diào)用設(shè)備串口發(fā)送數(shù)據(jù)方式

    這篇文章主要介紹了python編程調(diào)用設(shè)備串口發(fā)送數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python如何實現(xiàn)郵件功能

    Python如何實現(xiàn)郵件功能

    在本篇文章里小編給大家分享的是關(guān)于Python實現(xiàn)郵件功能的方法,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-05-05
  • PyCharm vs VSCode,作為python開發(fā)者,你更傾向哪種IDE呢?

    PyCharm vs VSCode,作為python開發(fā)者,你更傾向哪種IDE呢?

    這篇文章主要介紹了PyCharm和vscode作為python ide的優(yōu)劣,幫助你選擇適合自己的ide,感興趣的朋友可以了解下
    2020-08-08
  • Python中如何使用多線程優(yōu)化For循環(huán)

    Python中如何使用多線程優(yōu)化For循環(huán)

    這篇文章主要為大家詳細介紹了在Python中如何使用多線程實現(xiàn)優(yōu)化For循環(huán),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01
  • Python自動化運維和部署項目工具Fabric使用實例

    Python自動化運維和部署項目工具Fabric使用實例

    Fabric是一個Python庫,只要目標(biāo)機器支持ssh訪問,就可以借助fabric來進行遠程操作(如在host1上對host2遠程運行shell命令),顯然,由于fabric是個Python package,故其它Python package都可以被import到fabric特有的fabfile.py腳本中
    2016-09-09
  • Python?提速器numba

    Python?提速器numba

    這篇文章主要介紹了Python?提速器numba,相信大部分人都感嘆過python 真的太好用了,但是它真的好慢啊,然而今天我們就來用numba解決Python?慢的這個問題,需要的朋友可以參考一下
    2022-01-01
  • Django在Model保存前記錄日志實例

    Django在Model保存前記錄日志實例

    這篇文章主要介紹了Django在Model保存前記錄日志實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 一文帶你搞懂Python中__init__.py到底是什么

    一文帶你搞懂Python中__init__.py到底是什么

    朋友們,今天我們來聊聊 Python 里一個低調(diào)卻至關(guān)重要的文件——__init__.py,有些人可能聽說過它是“包的標(biāo)志”,也有人覺得它“沒啥大用,可以忽略”,今天我們就來徹底搞清楚 __init__.py 到底是干啥的
    2025-04-04

最新評論