Azure SQL 数据库:使用 Python 进行连接和数据查询

本快速入门演示了如何通过 Mac OS、Ubuntu Linux 和 Windows 平台使用 Python 连接到 Azure SQL 数据库,然后使用 Transact-SQL 语句在数据库中查询、插入、更新和删除数据。

先决条件

此快速入门使用以下某个快速入门中创建的资源作为其起点:

安装 Python 和数据库通信库

本部分中的步骤假定你熟悉使用 Python 开发,但不熟悉如何使用 Azure SQL 数据库。 如果不熟悉如何使用 Python 进行开发,请转到使用 SQL Server 生成应用并选择 Python,然后选择操作系统。

Mac OS

打开终端并导航到你要在其中创建 python 脚本的目录。 输入以下命令,安装 brewMicrosoft ODBC Driver for Macpyodbc。 pyodbc 使用 Linux 上的 Microsoft ODBC 驱动程序连接到 SQL 数据库。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew tap microsoft/msodbcsql https://github.com/Microsoft/homebrew-msodbcsql-preview
brew update
brew install msodbcsql 
#for silent install ACCEPT_EULA=y brew install msodbcsql
sudo pip install pyodbc==3.1.1

Linux (Ubuntu)

打开终端并导航到你要在其中创建 python 脚本的目录。 输入以下命令,安装适用于 Linux 的 Microsoft ODBC 驱动程序pyodbc。 pyodbc 使用 Linux 上的 Microsoft ODBC 驱动程序连接到 SQL 数据库。

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql.list
exit
sudo apt-get update
sudo apt-get install msodbcsql mssql-tools unixodbc-dev
sudo pip install pyodbc==3.1.1

Windows

安装 Microsoft ODBC Driver 13.1(如果系统提示,则升级驱动程序)。 Pyodbc 使用 Linux 上的 Microsoft ODBC 驱动程序连接到 SQL 数据库。

然后使用 pip 安装 pyodbc

pip install pyodbc==3.1.1

可在 此处

获取连接信息

获取连接到 Azure SQL 数据库所需的连接信息。 在后续过程中,将需要完全限定的服务器名称、数据库名称和登录信息。

  1. 登录到 Azure 门户
  2. 从左侧菜单中选择“SQL 数据库”,然后单击“SQL 数据库”页上的数据库。
  3. 在数据库的“概览”页上,查看如下图所示的完全限定的服务器名称。 将鼠标悬停在服务器名称上即可打开“通过单击进行复制”选项。

    server-name

  4. 如果忘了服务器的登录信息,请导航到 SQL 数据库服务器页,以查看服务器管理员名称并重置密码(如果需要)。

选择数据

通过以下代码将 pyodbc.connect 函数与 SELECT Transact-SQL 语句配合使用,以便按类别查询前 20 个产品。 Cursor.execute 函数可用于针对 SQL 数据库从查询中检索结果集。 此函数可接受任何查询,并返回可使用 cursor.fetchone() 循环访问的结果集。 将 server、database、username 和 password 参数替换为使用 AdventureWorksLT 示例数据创建数据库时指定的值。

import pyodbc
server = 'your_server.database.chinacloudapi.cn'
database = 'your_database'
username = 'your_username'
password = 'your_password'
driver= '{ODBC Driver 13 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName FROM [SalesLT].[ProductCategory] pc JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid")
row = cursor.fetchone()
while row:
    print str(row[0]) + " " + str(row[1])
    row = cursor.fetchone()

插入数据

通过以下代码使用 cursor.execute 函数和 INSERT Transact-SQL 语句,将新产品插入到 SalesLT.Product 表中。 将 server、database、username 和 password 参数替换为使用 AdventureWorksLT 示例数据创建数据库时指定的值。

import pyodbc
server = 'your_server.database.chinacloudapi.cn'
database = 'your_database'
username = 'your_username'
password = 'your_password'
driver= '{ODBC Driver 13 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
with cursor.execute("INSERT INTO SalesLT.Product (Name, ProductNumber, Color, StandardCost, ListPrice, SellStartDate) OUTPUT INSERTED.ProductID VALUES ('BrandNewProduct', '200989', 'Blue', 75, 80, '7/1/2016')"): 
    print ('Successfuly Inserted!')
cnxn.commit()

更新数据

通过以下代码使用 cursor.execute 函数和 UPDATE Transact-SQL 语句,更新之前添加的新产品。 将 server、database、username 和 password 参数替换为使用 AdventureWorksLT 示例数据创建数据库时指定的值。

import pyodbc
server = 'your_server.database.chinacloudapi.cn'
database = 'your_database'
username = 'your_username'
password = 'your_password'
driver= '{ODBC Driver 13 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
tsql = "UPDATE SalesLT.Product SET ListPrice = ? WHERE Name = ?"
with cursor.execute(tsql,50,'BrandNewProduct'):
    print ('Successfuly Updated!')
cnxn.commit()

删除数据

通过以下代码使用 cursor.execute 函数和 DELETE Transact-SQL 语句,删除之前添加的新产品。 将 server、database、username 和 password 参数替换为使用 AdventureWorksLT 示例数据创建数据库时指定的值。

import pyodbc
server = 'your_server.database.chinacloudapi.cn'
database = 'your_database'
username = 'your_username'
password = 'your_password'
driver= '{ODBC Driver 13 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
tsql = "DELETE FROM SalesLT.Product WHERE Name = ?"
with cursor.execute(tsql,'BrandNewProduct'):
    print ('Successfuly Deleted!')
cnxn.commit()

后续步骤