成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

四種 Python 連接 MySQL 數據庫的方法

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

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

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

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

  • mysqlclient
  • mysql-connector-python
  • PyMySQL
  • aiomysql

設置PlanetScale

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

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

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

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

創建一個數據庫

當你進入PlanetScale的儀表板。

  • 在你的組織概覽儀表板上點擊 "創建新數據庫"。
  • 給你的數據庫起個名字。
  • 從下拉菜單中選擇一個區域。
  • 點擊創建數據庫。

你的數據庫將被創建為一個主要的開發分支。你可以在這里進行模式修改,一旦你準備好了,就可以把它推廣到生產中。

獲取連接憑證

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

  • 在你的數據庫概覽頁面上點擊 "連接"。
  • 從 "連接方式 "下拉菜單中選擇 "Python"。
  • 將憑證復制到你的Python應用程序文件夾中的.env文件。

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

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

如果你從PlanetScale儀表板上復制了證書,你已經完成這一步,因為PlanetScale會自動檢測你的操作系統。

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

用mysqlclient連接到MySQL

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

  • 首先安裝mysqlclient。你可以通過兩種方式來完成這件事。
  • 使用來自MySQL官方網站的安裝程序,它與你正在運行的操作系統和SQL版本相匹配。

使用 pip 來安裝它。

pip install mysqlclient

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

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

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

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 并導入 os 模塊以訪問.env 文件中的數據庫憑證。

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

這個例子使用連接來獲取數據庫的SQL版本,然后關閉連接。

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

用MySQL connector連接到MySQL

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

注意,MySQL Connector/Python不支持舊的MySQL服務器認證方法,這意味著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數據庫。除了是異步的特性之外,連接代碼與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())

總結

在數據庫中保存數據是應用程序的共同特征之一。像Python一樣,大多數編程語言支持與不同數據庫的連接和交互。本教程探討了Python與MySQL的連接。

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

責任編輯:武曉燕 來源: Python中文社區
相關推薦

2018-01-03 08:52:27

MySQL數據庫級別

2011-03-21 12:51:16

Oracle數據庫表連接

2011-03-14 13:33:32

Oracle數據庫啟動

2018-09-13 14:51:43

NoSQL數據庫大數據

2011-08-02 17:26:38

Oracle數據庫遠程連接

2020-02-27 09:00:00

數據庫設計工具

2010-04-19 16:08:31

Oracle數據庫

2018-11-26 18:45:22

數據可視化繪圖可視化

2019-09-12 09:00:32

數據可視化熱圖數據集

2022-09-08 16:28:53

Python數據可視化機器學習

2019-04-03 05:04:50

2010-11-03 11:49:15

刪除DB2數據

2021-03-10 10:13:39

爬蟲Python代碼

2023-08-30 23:41:16

AI框架項目

2023-02-10 11:13:42

網絡功耗無線網絡設備

2010-10-19 17:40:30

SqlServer主鍵

2023-11-05 09:00:00

Linux命令MySQL

2010-04-22 17:36:51

Oracle數據庫

2015-07-23 14:50:28

大數據

2011-05-20 09:55:26

Oracle連接
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久黄网 | 欧美成人精品一区二区三区 | 精品九九久久 | 国产成人免费 | 国产ts人妖系列高潮 | 波波电影院一区二区三区 | 97国产精品 | 亚洲精品乱码8久久久久久日本 | 精品一区在线免费观看 | 国产在线拍偷自揄拍视频 | 日本超碰 | 国产sm主人调教女m视频 | 欧美精品一二三 | 中国免费黄色片 | 国产精品欧美一区二区三区不卡 | 亚洲精品国产综合区久久久久久久 | 久久精品国产一区二区电影 | 久久神马 | 欧美激情综合 | 超碰伊人 | 国产精品国产成人国产三级 | 综合久久亚洲 | 91美女在线观看 | 久久久久一区二区三区 | av一级一片 | 亚洲国产精品一区二区www | 九九一级片 | 国产原创视频 | 在线国产一区 | 国产第一页在线播放 | 久久久久久久久久久久久久国产 | 日本特黄a级高清免费大片 国产精品久久性 | 精品96久久久久久中文字幕无 | 久久一起草 | 99国产精品视频免费观看一公开 | 成人在线小视频 | 91一区二区 | 婷婷久久综合 | 夜夜骑首页 | 性做久久久久久免费观看欧美 | 最新免费av网站 |