Snabbstart: Använd Python för att ansluta och fråga efter data för Azure HorizonDB (förhandsversion)

I den här snabbstarten ansluter du till en Azure HorizonDB-instans med hjälp av Python. Sedan använder du SQL-instruktioner för att fråga, infoga, uppdatera och ta bort data i databasen från macOS-, Ubuntu Linux- och Windows-plattformar.

Stegen i den här artikeln omfattar PostgreSQL-autentisering.

PostgreSQL-autentisering använder konton som lagras i PostgreSQL och du måste hantera rotationen av lösenorden själv.

Den här artikeln förutsätter att du är bekant med att utveckla med hjälp av Python, men du är nybörjare på att arbeta med Azure HorizonDB.

Prerequisites

Lägga till brandväggsregler för klientarbetsstationen

Förbereda utvecklingsmiljön

Ändra till en mapp där du vill köra koden och skapa och aktivera en virtuell miljö. En virtuell miljö är en fristående katalog för en viss version av Python plus de andra paket som behövs för programmet.

Kör följande kommandon för att skapa och aktivera en virtuell miljö:

py -3 -m venv .venv
.venv\Scripts\activate

Installera Python-biblioteken

Installera De Python-bibliotek som behövs för att köra kodexemplen.

Installera psycopg-modulen, som gör det möjligt att ansluta till och köra frågor mot en PostgreSQL-databas.

# Recommended: install the binary wheel that bundles a compatible libpq wrapper (Windows/macOS)
python -m pip install "psycopg[binary]"

# Linux alternative (if you prefer building against system libpq):
sudo apt-get update
sudo apt-get install -y libpq-dev build-essential python3-dev
python -m pip install psycopg

Lägga till autentiseringskod

I det här avsnittet lägger du till autentiseringskod i arbetskatalogen och utför eventuella ytterligare steg som krävs för autentisering och auktorisering med klusterinstansen.

Innan du lägger till autentiseringskoden kontrollerar du att de nödvändiga paketen för varje exempel är installerade.

Nödvändiga paket (exempel i den här artikeln):

  • Lösenordsexempel: psycopg (rekommenderas: python -m pip install "psycopg[binary]")

Valfritt: skapa en requirements.txt med dessa poster och installera sedan med python -m pip install -r requirements.txt för reproducerbara installationer.

  1. Kopiera följande kod till en redigerare och spara den i en fil med namnet get_conn.py.

    import urllib.parse
    import os
    
    def get_connection_uri():
    
       # Read URI parameters from the environment
       dbhost = os.environ['DBHOST']
       dbname = os.environ['DBNAME']
       dbuser = urllib.parse.quote(os.environ['DBUSER'])
    password = os.environ['DBPASSWORD']
    sslmode = os.environ['SSLMODE']
    db_uri = f"host={dbhost} dbname={dbname} user={dbuser} password={password} sslmode={sslmode}"
       # Construct connection URI
       return db_uri
    
  2. Hämta information om databasanslutning.

    Använd portalen Azure:

    1. På den vänstra menyn i Azure portalen väljer du Alla resurser och söker sedan efter klustret du har skapat.

    2. Välj klusternamnet.

    3. I resursmenyn väljer du Översikt. Hovra musen över det värde som visas som Primär slutpunkt (läsa/skriva) och välj knappen Kopiera till Urklipp .

      Skärmbild som visar värdet för den primära slutpunkten på sidan Översikt.

    4. Om du glömmer lösenordet för administratörsinloggningen kan du återställa det med hjälp av knappen Återställ lösenord .

      Skärmbild som visar knappen Återställ lösenord på sidan Översikt.

  3. Ange miljövariabler för anslutnings-URI-elementen:

    set DBHOST=<cluster-name>
    set DBNAME=<database-name>
    set DBUSER=<username>
    set DBPASSWORD=<password>
    set SSLMODE=require
    

Så här kör du Python-exemplen

För varje kodexempel i den här artikeln:

  1. Skapa en ny fil i en textredigerare.

  2. Lägg till kodexemplet i filen.

  3. Spara filen i projektmappen med ett .py tillägg, till exempel postgres-insert.py. För Windows kontrollerar du att UTF-8-kodning är markerat när du sparar filen.

  4. I projektmappens typ python följt av filnamnet, till exempel python postgres-insert.py.

Skapa en tabell och infoga data

Följande kodexempel ansluter till ditt Azure HorizonDB-kluster med hjälp av funktionen psycopg.connect och läser in data med en SQL INSERT-instruktion. Funktionen cursor.execute kör SQL-frågan mot databasen.

import psycopg
from get_conn import get_connection_uri

conn_string = get_connection_uri()

conn = psycopg.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()

När koden körs genererar den följande utdata:

Connection established
Finished dropping table (if existed)
Finished creating table
Inserted 3 rows of data

Läsa data

Följande kodexempel ansluter till ditt Azure HorizonDB-kluster och använder cursor.execute med SQL SELECT-instruktionen för att läsa data. Den här funktionen accepterar en fråga och returnerar en resultatuppsättning som itererar över med hjälp av cursor.fetchall().

import psycopg
from get_conn import get_connection_uri

conn_string = get_connection_uri()

conn = psycopg.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()

När koden körs genererar den följande utdata:

Connection established
Data row = (1, banana, 150)
Data row = (2, orange, 154)
Data row = (3, apple, 100)

Uppdatera datainformation

Följande kodexempel ansluter till ditt Azure HorizonDB-kluster och använder cursor.execute med SQL UPDATE-instruktionen för att uppdatera data.

import psycopg
from get_conn import get_connection_uri

conn_string = get_connection_uri()

conn = psycopg.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()

Ta bort data

Följande kodexempel ansluter till ditt Azure HorizonDB-kluster och använder cursor.execute med SQL DELETE-instruktionen för att ta bort ett lagerobjekt som du infogade tidigare.

import psycopg
from get_conn import get_connection_uri

conn_string = get_connection_uri()

conn = psycopg.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()