App下載

在開發(fā)中要如何將Python程序連接到MariaDB?將Python程序連接到 MariaDB方法分享!

叼著奶瓶去逛gai 2021-09-18 17:47:06 瀏覽數(shù) (4809)
反饋

您可以使用流行的編程語言 Python 來管理存儲在 MariaDB 平臺中的數(shù)據(jù),包括 MariaDB Server、MariaDB MaxScale 和 MariaDB SkySQL。以下是有關(guān)從 Python 連接到 MariaDB 平臺以檢索、更新和插入信息所需了解的所有信息。

準備和安裝

您將需要訪問 MariaDB 服務(wù)器。我們推薦以下兩種方法之一:

1. 在您自己的硬件上下載 MariaDB 服務(wù)器。有關(guān)文檔中的分步說明,請參閱 部署指南。

2. 使用 MariaDB SkySQL 部署 MariaDB 平臺,其中包括 MariaDB Enterprise Server。請參閱我們的文檔以在幾分鐘內(nèi)啟動數(shù)據(jù)庫服務(wù)。

如果您想嘗試 Python 與 MariaDB 的集成,但沒有可使用的數(shù)據(jù)庫,則可以使用流行的員工示例數(shù)據(jù)庫。

MariaDB 通過 MariaDB Connector/Python 提供 Python 支持,可通過 Python Package Index 獲得。要安裝,請使用 PIP:

Shell:

$ pip3 install mariadb

連接到 MariaDB 服務(wù)器

1. 要使用 MariaDB Connector/Python 連接到 MariaDB 服務(wù)器,您必須先導(dǎo)入它,就像導(dǎo)入任何其他模塊一樣: import mariadb

2.接下來,使用connect()函數(shù)建立數(shù)據(jù)庫連接。該函數(shù)采用一系列命名參數(shù)來指定您的客戶端憑據(jù),例如用戶名、主機、密碼。如果您在 SkySQL 上使用數(shù)據(jù)庫實例,此信息將在您的數(shù)據(jù)庫實例的服務(wù)詳細信息頁面中提供。

該連接為您提供了一個界面,用于配置您的應(yīng)用程序與 MariaDB 服務(wù)器的連接。

3. 最后,調(diào)用cursor()連接上的方法來檢索游標(biāo)。

游標(biāo)為您提供了與服務(wù)器交互的界面,例如運行 SQL 查詢和管理事務(wù)。

Python:

# Module Imports
import mariadb
import sys 
# Connect to MariaDB Platform
try: conn = mariadb.connect( 
    user="db_user", 
    password="db_user_passwd", 
    host="192.0.2.1", 
    port=3306, 
    database="employees" 
) except mariadb.Error as e: 
    print(f"Error connecting to MariaDB Platform: {e}") 
    sys.exit(1) 
# Get Cursor 
cur = conn.cursor()

檢索數(shù)據(jù)

有了初始代碼后,您就可以開始處理數(shù)據(jù)了。您應(yīng)該做的第一件事是嘗試從數(shù)據(jù)庫中檢索信息。以下是針對員工數(shù)據(jù)庫的查詢代碼:

Python:

cur.execute(
    "SELECT first_name,last_name FROM employees WHERE first_name=?", 
    (some_name,))

MariaDB 連接器/Python 使用準備好的語句,清理元組中的值并將其插入問號 (?) 的位置。在處理用戶提供的信息時,這比通過 f 字符串或格式說明符插入更安全。

查詢結(jié)果存儲在游標(biāo)對象的列表中。要查看結(jié)果,您可以在光標(biāo)上循環(huán)。

Python:

# Print Result-set
for (first_name, last_name) in cur: 
    print(f"First Name: {first_name}, Last Name: {last_name}")

每一行作為包含SELECT語句中列的元組從游標(biāo)傳遞。

添加數(shù)據(jù)

execute()對INSERT語句使用相同的方法,您可以向表中添加行。

Python:

cursor.execute(
    "INSERT INTO employees (first_name,last_name) VALUES (?, ?)", 
    (first_name, last_name))

默認情況下,MariaDB Connector/Python 啟用自動提交。如果您想手動管理您的事務(wù),僅在您準備好時提交,您可以通過將autocommit連接上的屬性設(shè)置為 False來禁用它。

Python:

# Disable Auto-Commit
conn.autocommit = False

完成此操作后,您可以使用commit()和rollback()方法提交和回滾事務(wù)。MariaDB Server 允許您在使用 InnoDB 存儲引擎時在同一個表上運行多個并發(fā)事務(wù)而無需鎖定它。

在插入行時,您可能希望在生成最后插入的行時找到它的主鍵,就像自動遞增的值一樣。您可以使用lastrowid()光標(biāo)上的方法檢索它。

更新和刪除行與插入行類似。唯一的區(qū)別在于所使用的查詢。

捕捉異常

對于您的任何 SQL 操作(查詢、更新、刪除或插入記錄),您都應(yīng)該嘗試捕獲錯誤,以便您可以驗證您的操作是否按預(yù)期執(zhí)行,并且您在出現(xiàn)任何問題時都知道。要捕獲錯誤,請使用 Error 類:

Python:

try: 
    cursor.execute("some MariaDB query"))
except mariadb.Error as e: 
    print(f"Error: {e}")

如果try上述代碼的子句中的查詢失敗,MariaDB Server 會返回一個 SQL 異常,該異常在except 中被捕獲并打印到 stdout。當(dāng)您使用數(shù)據(jù)庫時,這種捕獲異常的編程最佳實踐尤其重要,因為您需要確保信息的完整性。

完成對數(shù)據(jù)庫的使用后,請確保關(guān)閉此連接,以避免將未使用的連接保持打開狀態(tài),從而浪費資源。您可以使用以下close()方法關(guān)閉連接:

Python:

# Close Connection
conn.close()

如果您使用 SkySQL 進行試驗,您可能需要刪除您的數(shù)據(jù)庫服務(wù)以停止產(chǎn)生費用。

完整的腳本

這就是將 Python 代碼連接到 MariaDB 數(shù)據(jù)庫是多么簡單和直接。以下是完整得腳本的代碼:

Python:

#!/usr/bin/python 
import mariadb 
conn = mariadb.connect( 
    user="db_user", 
    password="db_user_passwd", 
    host="localhost", 
    database="employees"
) 
cur = conn.cursor() 
#retrieving information 
some_name = "Georgi" 
cur.execute("SELECT first_name,last_name FROM employees WHERE first_name=?", (some_name,))
for first_name, last_name in cur: 
    print(f"First name: {first_name}, Last name: {last_name}") 
#insert information
try: 
    cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria","DB"))
except mariadb.Error as e: 
    print(f"Error: {e}") 
conn.commit() 
print(f"Last Inserted ID: {cur.lastrowid}") 
conn.close()


0 人點贊