Hızlı Başlangıç: Azure HorizonDB 'ye bağlanmak ve verileri sorgulamak için Python kullanma (Önizleme)

Bu hızlı başlangıçta, Python kullanarak bir Azure HorizonDB örneğine bağlanacaksınız. Ardından sql deyimlerini kullanarak veritabanındaki verileri macOS, Ubuntu Linux ve Windows platformlarından sorgular, ekler, güncelleştirir ve silersiniz.

Bu makaledeki adımlar PostgreSQL kimlik doğrulamasını içerir.

PostgreSQL kimlik doğrulaması PostgreSQL'de depolanan hesapları kullanır ve parolaların döndürmesini kendiniz yönetmeniz gerekir.

Bu makalede, Python kullanarak geliştirme konusunda bilgi sahibi olduğunuz, ancak Azure HorizonDB ile çalışmaya yeni olduğunuz varsayılır.

Prerequisites

İstemci iş istasyonunuz için güvenlik duvarı kuralları ekleme

  • Azure HorizonDB kümenizi Public erişimi (izin verilen IP adresleri) ile oluşturduysanız, yerel IP adresinizi kümenizdeki güvenlik duvarı kuralları listesine ekleyebilirsiniz. Azure HorizonDB (Önizleme) içindeki Ağ bölümüne bakın.

Geliştirme ortamınızı hazırlama

Kodu çalıştırmak ve sanal ortam oluşturup etkinleştirmek istediğiniz bir klasöre geçin. Sanal ortam, belirli bir Python sürümüne ek olarak bu uygulama için gereken diğer paketler için bağımsız bir dizindir.

Sanal ortam oluşturmak ve etkinleştirmek için aşağıdaki komutları çalıştırın:

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

Python kitaplıklarını yükleme

Kod örneklerini çalıştırmak için gereken Python kitaplıklarını yükleyin.

PostgreSQL veritabanına bağlanmayı ve veritabanını sorgulamayı sağlayan psycopg modülünü yükleyin.

# 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

Kimlik doğrulama kodu ekleme

Bu bölümde, çalışma dizininize kimlik doğrulama kodu ekler ve küme örneğiniz ile kimlik doğrulaması ve yetkilendirme için gereken ek adımları gerçekleştirirsiniz.

Kimlik doğrulama kodunu eklemeden önce, her örnek için gerekli paketlerin yüklendiğinden emin olun.

Gerekli paketler (bu makaledeki örnekler):

  • Parola örneği: psycopg (önerilen: python -m pip install "psycopg[binary]")

İsteğe bağlı: tekrarlanabilir kurulumlar için bu girdileri içeren bir requirements.txt oluşturun ve python -m pip install -r requirements.txt ile yükleyin.

  1. Aşağıdaki kodu bir düzenleyiciye kopyalayın ve get_conn.py adlı bir dosyaya kaydedin.

    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. Veritabanı bağlantı bilgilerini alın.

    Azure portalını kullanma:

    1. Azure portalındaki sol taraftaki menüden Tüm kaynaklar öğesini seçin ve oluşturduğunuz kümeyi arayın.

    2. Küme adını seçin.

    3. Kaynak menüsünde Genel Bakış'ı seçin. Fareyi Birincil uç nokta (okuma/yazma) olarak gösterilen değerin üzerine getirin ve Panoya kopyala düğmesini seçin.

      Genel Bakış sayfasında birincil uç noktanın değerini gösteren ekran görüntüsü.

    4. Yönetici oturum açma parolasını unutursanız Parolayı sıfırla düğmesini kullanarak parolayı sıfırlayabilirsiniz.

      Genel Bakış sayfasındaki Parolayı sıfırla düğmesini gösteren ekran görüntüsü.

  3. Bağlantı URI öğeleri için ortam değişkenlerini ayarlayın:

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

Python örneklerini çalıştırma

Bu makaledeki her kod örneği için:

  1. Metin düzenleyicisinde yeni bir dosya oluşturun.

  2. Kod örneğini dosyaya ekleyin.

  3. Dosyayı proje klasörünüzde postgres-insert.py gibi bir.py uzantısıyla kaydedin. Windows için, dosyayı kaydederken UTF-8 kodlamasının seçili olduğundan emin olun.

  4. Proje klasörünüzde python yazın ve ardından dosya adını girin; örneğin python postgres-insert.py.

Tablo oluşturma ve veri ekleme

Aşağıdaki kod örneği, psycopg.connect işlevini kullanarak Azure HorizonDB kümenize bağlanır ve sql INSERT deyimiyle verileri yükler. işlevi sql cursor.execute sorgusunu veritabanına karşı yürütür.

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

Kod başarıyla çalıştırıldığında aşağıdaki çıkışı üretir:

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

Veriyi oku

Aşağıdaki kod örneği, Azure HorizonDB kümenize bağlanır ve verileri okumak için SQL SELECT deyimiyle cursor.execute komutunu kullanır. Bu işlev bir sorguyu kabul eder ve cursor.fetchall() kullanarak yinelemek için bir sonuç kümesi döndürür.

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

Kod başarıyla çalıştırıldığında aşağıdaki çıkışı üretir:

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

Verileri güncelleştirme

Aşağıdaki kod örneği Azure HorizonDB kümenize bağlanır ve verileri güncelleştirmek için SQL UPDATE deyimiyle cursor.execute komutunu kullanır.

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

Verileri sil

Aşağıdaki kod örneği Azure HorizonDB kümenize bağlanır ve daha önce eklediğiniz bir envanter öğesini silmek için SQL DELETE deyimiyle cursor.execute kullanır.

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