您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

快速入门:使用 Python 连接到 Azure Database for PostgreSQL 灵活服务器并查询其中的数据

重要

Azure Database for PostgreSQL 灵活服务器以预览版提供

在本快速入门中,你将使用 Python 连接到 Azure Database for PostgreSQL 灵活服务器。 然后使用 SQL 语句在 Mac、Ubuntu Linux 和 Windows 平台的数据库中查询、插入、更新和删除数据。

本文假设你熟悉如何使用 Python 进行开发,但不熟悉 Azure Database for PostgreSQL 灵活服务器的用法。

先决条件

准备客户端工作站

安装适用于 PostgreSQL 的 Python 库

psycopg2 模块可连接到 PostgreSQL 数据库并对其进行查询,并可作为 Linux、macOS 或 Windows 包提供。 安装二进制版本的模块,包括所有依赖项。 有关 psycopg2 安装和要求的详细信息,请参阅安装

若要安装 psycopg2,请打开终端或命令提示符并运行命令 pip install psycopg2

获取数据库连接信息

连接到 Azure Database for PostgreSQL 灵活服务器需要完全限定的服务器名称和登录凭据。 可以从 Azure 门户获取此信息。

  1. Azure 门户中,搜索并选择灵活服务器的名称。

  2. 在服务器的“概述”页上,复制完全限定的“服务器名称”和“管理员用户名” 。 完全限定的“服务器名称”始终为“<my-server-name>.postgres.database.azure.com”的格式。

    你还需要管理员密码。 如果忘记,可以从概述页重置它。

如何运行 Python 示例

对于本文中的每个代码示例:

  1. 在文本编辑器中创建新的文件。

  2. 将代码示例添加到文件。 在代码中,进行以下替换:

    • <server-name><admin-username> 替换为从 Azure 门户复制的值。
    • <admin-password> 替换为服务器密码。
    • <database-name> 替换为 Azure Database for PostgreSQL 灵活服务器数据库的名称。 创建服务器时,会自动创建一个名为 postgres 的默认数据库。 你可以重命名该数据库,或使用 SQL 命令创建新的数据库。
  3. 将文件保存在具有 .py 扩展名的项目文件夹(如 postgres-insert.py)中 。 对于 Windows,确保在保存文件时选择 UTF-8 编码。

  4. 若要运行该文件,请在命令行界面中切换到项目文件夹,然后键入 python 后跟文件名,例如 python postgres-insert.py

创建表并插入数据

下面的代码示例使用 psycopg2.connect 函数连接到 Azure Database for PostgreSQL 灵活服务器数据库,并使用 SQL INSERT 语句加载数据。 cursor.execute 函数对数据库执行 SQL 查询。

import psycopg2
# Update connection string information 
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string) 
print("Connection established")
cursor = conn.cursor()
# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")
# Create a table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")
# Insert some data into the table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted 3 rows of data")
# Clean up
conn.commit()
cursor.close()
conn.close()

如果代码成功运行,则会生成以下输出:

命令行输出

读取数据

下面的代码示例连接到 Azure Database for PostgreSQL 灵活服务器数据库,并使用 cursor.execute 和 SQL SELECT 语句来读取数据。 此函数可接受查询,并返回可使用 cursor.fetchall() 循环访问的结果集。

import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string) 
print("Connection established")
cursor = conn.cursor()
# Fetch all rows from table
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
# Print all rows
for row in rows:
    print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
# Cleanup
conn.commit()
cursor.close()
conn.close()

更新数据

下面的代码示例连接到 Azure Database for PostgreSQL 灵活服务器数据库,并使用 cursor.execute 和 SQL UPDATE 语句来更新数据。

import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string) 
print("Connection established")
cursor = conn.cursor()
# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()

删除数据

下面的代码示例连接到 Azure Database for PostgreSQL 灵活服务器数据库,并使用 cursor.execute 和 SQL DELETE 语句来删除以前插入的库存项。

import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string) 
print("Connection established")
cursor = conn.cursor()
# Delete data row from table
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()

后续步骤