快速入門:使用 Python 來連線和查詢適用於 PostgreSQL 的 Azure 資料庫中的資料 - 單一伺服器
適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器
重要
適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器適用於 PostgreSQL 的 Azure 資料庫發生什麼情況?
在本快速入門中,您將了解如何連線到適用於 PostgreSQL 的 Azure 資料庫單一伺服器上的資料庫,並執行 SQL 陳述式在 macOS、Ubuntu Linux 或 Windows 上使用 Python 查詢。
秘訣
如果您想要使用 PostgreSQL 建置 Django 應用程式,請查看使用 PostgreSQL 部署 Django Web 應用程式教學課程。
Prerequisites
在本快速入門中,您需要:
具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
使用 Azure 入口網站建立適用於 PostgreSQL 的 Azure 資料庫單一伺服器
如果沒有,請使用 Azure CLI。根據您使用的是公用或私人存取,完成下列其中一項動作以啟用連線。
動作 連線方法 操作指南 設定防火牆規則 公用 入口網站
CLI設定服務端點 公用 入口網站
CLI設定私人連結 私人 入口網站
CLI最新 pip 套件安裝程式。
在終端機或命令提示字元視窗中使用
pip install psycopg2-binary
,安裝 psycopg2。 如需詳細資訊,請參閱安裝方式psycopg2
。
取得資料庫連線資訊
連線到適用於 PostgreSQL 的 Azure 資料庫需要完整的伺服器名稱和登入認證。 您可以從 Azure 入口網站中取得此資訊。
在 Azure 入口網站中,搜尋並選取適用於 PostgreSQL 的 Azure 資料庫伺服器名稱。
在伺服器的 [概觀] 頁面上,複製完整的伺服器名稱和管理使用者名稱。 完整伺服器名稱的格式一律為 <my-server-name>.postgres.database.azure.com,而管理使用者名稱的格式一律為 <my-admin-username>@<my-server-name>。
也需要您的管理員密碼。 如果您忘記密碼,可以在此頁面中重設密碼。
重要事項
取代下列值:
- 將
<server-name>
和<admin-username>
取代為您從 Azure 入口網站中複製的值。 - 將
<admin-password>
取代為伺服器密碼。 - 當您建立伺服器時,系統已自動建立名為 postgres
<database-name>
的預設資料庫 。 您可以使用 SQL 命令來重新命名該資料庫或建立新的資料庫。
步驟 1:連線和插入資料
下列程式碼範例會連線到您的「適用於 PostgreSQL 的 Azure 資料庫」資料庫,方式如下:
- psycopg2.connect 函式,並使用 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:讀取資料
下列程式碼範例會連線到您的「適用於 PostgreSQL 的 Azure 資料庫」資料庫,方式如下:
- 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