Azure Database for PostgreSQL 单一服务器即将停用。 强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 有关迁移到 Azure Database for PostgreSQL 灵活服务器的详细信息,请参阅 Azure Database for PostgreSQL 单一服务器的最新动态?

在快速入门中,了解如何连接到 Azure Database for PostgreSQL 单一服务器上的数据库,以及如何运行 SQL 语句以在 macOS、Ubuntu Linux 或 Windows 上使用 Python 进行查询。

如果希望使用 PostgreSQL 生成 Django 应用程序,请查看教程 - 使用 PostgreSQL 部署 Django Web 应用 教程。

对于本快速入门,你需要:

  • 具有活动订阅的 Azure 帐户。 免费创建帐户

  • 使用 Azure 门户
    Azure CLI 创建 Azure Database for PostgreSQL 单一服务器(如果没有)。

  • 请完成以下操作之一以启用连接,具体取决于你使用的是公共访问还是私有访问。

  • 最新 pip 包安装程序。

  • 在终端或命令提示符窗口中使用 pip install psycopg2-binary 安装 psycopg2 。 有关详细信息,请参阅 如何安装 psycopg2

    获取数据库连接信息

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

  • Azure 门户 中,搜索 Azure Database for PostgreSQL 服务器名称并选择该名称。

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

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

  • <server-name> <admin-username> 替换为从 Azure 门户复制的值。
  • <admin-password> 替换为服务器密码。
  • <database-name> 替换为你在创建服务器时自动创建一个名为 postgres 的默认数据库。 你可以重命名该数据库,或使用 SQL 命令 创建新的数据库
  • 步骤 1:连接并插入数据

    下面的代码示例使用

  • 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()
    

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

    步骤 2:读取数据

    下面的代码示例连接到 Azure Database for PostgreSQL 数据库,并使用

  • cursor.execute 和 SQL SELECT 语句来读取数据。
  • 通过使用以下语句,cursor.fetchall() 接受查询并返回要循环访问的结果集
  • # 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])))

    步骤 3:更新数据

    下面的代码示例使用 cursor.execute 和 SQL UPDATE 语句来更新数据。

    # 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")

    步骤 5:删除数据

    下面的代码示例运行 cursor.execute 和 SQL DELETE 语句删除先前插入的清单项。

    # Delete data row from table cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",)) print("Deleted 1 row of data")

    若要清理本快速入门中使用的所有资源,请使用以下命令删除该资源组:

    az group delete \
        --name $AZ_RESOURCE_GROUP \
        --yes
    

    使用门户管理 Azure Database for MySQL 服务器

    使用 CLI 管理 Azure Database for MySQL 服务器