使用 Python 和 Pyodbc 連線到 Microsoft SQL Server

Vaibhav Vaibhav 2021年12月4日
使用 Python 和 Pyodbc 連線到 Microsoft SQL Server

Microsoft SQL Server 是一個關聯式資料庫管理系統或簡稱 RDBMS。顧名思義,它是由微軟開發的,是用 C/C++ 編寫的。它是一種工具,可讓其使用者使用 SQL 或結構化查詢語言與關聯式資料庫進行互動。

在處理實際應用程式時,我們必須處理大量資料。資料必須每秒更新、建立和刪除,而這些 RDBMS 足夠智慧和強大,可以快速安全地處理此類操作。

現在,應用程式是使用各種程式語言開發的。這意味著每種程式語言都應該有一種方法可以連線到這些 RDBMS 並訪問儲存在資料庫中的資料。這些方法包括 ORM 或物件關係對映庫和開放資料庫連線或 ODBC 包。這是兩個非常不同的東西,它們都可以用來連線到資料庫。

兩者之間的一個簡單區別是 ORM 允許開發人員使用 Python 類或代表資料庫表和管理器的模型(另一個 Python 類)與資料庫互動,以對模型執行查詢。另一方面,ODBC 允許開發人員編寫原始或本機 SQL 查詢以直接與資料庫互動。

由於 Python 是一種著名且廣泛使用的程式語言,因此它對 ORMsODBCs 也有很好的支援。而且,由於我們正在討論使用 Python 和 pyodbc 連線到 Microsoft SQL Server,我們將主要了解 ODBCs,因為 pyodbc 是一個 ODBC

使用 pyodbc 連線到 Microsoft SQL Server

要連線到 Microsoft SQL Server,我們首先需要有關伺服器的一些詳細資訊:驅動程式名稱、伺服器名稱和資料庫名稱。有了以上資訊,必須建立一個特殊的字串,該字串將傳遞給 pyodbc 庫的 connect() 函式。

字串的格式如下——

Driver = { < driver_name > }
Server = <server_name >
Database = <database_name >
Trusted_Connection = yes

使用 connect() 方法,將在程式和伺服器之間建立連線,然後使用該連線,可以直接在資料庫上執行 SQL 查詢。

相同的參考下面的程式碼。

import pyodbc

connection = pyodbc.connect(
    "Driver={<driver_name>};Server=<server_name>;Database=<database_name>;Trusted_Connection=yes;"
)  # Connection string
cursor = connection.cursor()
cursor.execute("SELECT * FROM <table_name>")  # Executing a query

for row in cursor:  # Looping over returned rows and printing them
    print(f"row = {row}")

還可以使用 DSNData Source Name、使用者 ID 和密碼連線到伺服器。並且,相同的字串如下。

DSN = <dsn >
UID = <user >
PWD = <password >

對於這種情況,請參考以下程式碼。

import pyodbc

connection = pyodbc.connect("DSN=<dsn>;UID=<user>;PWD=<password>")  # Connection string
cursor = connection.cursor()
cursor.execute("SELECT * FROM <table_name>")  # Executing a query

for row in cursor:  # Looping over returned rows and printing them
    print(f"row = {row}")

要了解更多關於 Microsoft SQL Server 的驅動,連線,以及使用該庫連線所需的資訊,請參考這裡。而且,要了解更多關於庫本身的資訊,請參考官方文件

作者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.