使用 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 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.

LinkedIn GitHub