连接 Python 和 SQL Server

互联网上有很多可用的库来建立它们之间的连接。本节将通过一个示例讨论如何使用 pyodbc 库连接 Python 和 SQL Server。

使用 pyodbc connect 建立 Python 和 Microsoft SQL Server 之间连接的语法如下所示。

pyodbc.connect("Driver = {SQL Server Native Client 11.0};"               
               "Server = Server_Name;"
               "Database = Database_Name;"
               "username = User_Name;"
               "password = User_Password;"
               "Trusted_Connection = yes;")
  • 驱动程序:在这里,您必须指定 ODBC 连接或本机客户端。
  • 服务器:您必须指定服务器实例名称。
  • 数据库名称:您必须指定要从中提取数据的数据库名称。
  • 用户名:请指定有权访问数据库的用户名。如果您使用 Windows 身份验证,则可以省略用户名和密码。
  • 密码:请为上述用户名指定密码。

在我们深入了解连接到 SQL Server 的示例之前,让我向您展示我们将提取的数据。

Employee Table 1

从上面的屏幕截图中,您可以看到我们正在选择 Employ 表中存在的所有记录。我们在此示例中使用的 SELECT 语句如下所示

SELECT [FirstName]
      ,[LastName]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
      ,[ID]
  FROM [Employ]

连接 Python 和 SQL Server 示例

在此示例中,我们将向您展示如何使用 pyodbc 库的 connect 函数,通过一个实际示例建立与 SQL Server 的连接。

import pyodbc
conn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                      "Server=SURESH;"
                      "Database=SQL Tutorial;"
                      "Trusted_Connection=yes;")

cursor = conn.cursor()
cursor.execute('SELECT * FROM Employ')

for row in cursor:
    print('row = %r' % (row,))
Connect Python and SQL Server Example 2

在此 Python 连接到 SQL Server 的程序中,首先,我们导入了 pyodbc 库。它具有所有必需的函数来建立连接。

以下是我们可以对 SQL Server 执行的一些操作,但不限于它们。

  1. 创建数据库
  2. 从表中选择记录
  3. 选择排序后的表记录
  4. 前 10 条记录
  5. Where 子句

如果您没有 Python 库,请以管理员身份打开命令提示符,导航到脚本(可选),然后键入 pip install pyodbc。

import pyodbc

接下来,我们使用 connect 函数连接到 SQL Server。在这里,我们使用 Windows 身份验证,因此我们没有指定用户名和密码。但是,在实际操作中,您必须指定用户名和密码才能连接到数据库。

conn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                      "Server=SURESH;"
                      "Database=SQL Tutorial;"
                      "Trusted_Connection=yes;")

接下来,我们从 SQL Server 中 Employ 表的数据。

cursor = conn.cursor()
cursor.execute('SELECT * FROM Employ')

最后,我们使用 For 循环迭代 Employ 表中的每一行,然后打印输出。

for row in cursor:
    print('row = %r' % (row,))