Hızlı Başlangıç: PostgreSQL için Azure Veritabanı - Esnek Sunucu'da verileri bağlamak ve sorgulamak için Python kullanma
ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Esnek Sunucu
Bu hızlı başlangıçta Python kullanarak PostgreSQL için Azure Veritabanı esnek bir sunucu ö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 iki kimlik doğrulama yöntemini içerir: Microsoft Entra kimlik doğrulaması ve PostgreSQL kimlik doğrulaması. Parolasız sekmesi Microsoft Entra kimlik doğrulamasını, Parola sekmesi ise PostgreSQL kimlik doğrulamasını gösterir.
Microsoft Entra kimlik doğrulaması, Microsoft Entra Kimliği'nde tanımlanan kimlikleri kullanarak PostgreSQL için Azure Veritabanı bağlanmaya yönelik bir mekanizmadır. Microsoft Entra kimlik doğrulaması ile veritabanı kullanıcı kimliklerini ve diğer Microsoft hizmetleri merkezi bir konumda yönetebilir ve bu da izin yönetimini basitleştirir. Daha fazla bilgi edinmek için bkz. PostgreSQL için Azure Veritabanı - Esnek Sunucu ile Microsoft Entra kimlik doğrulaması.
PostgreSQL kimlik doğrulaması PostgreSQL'de depolanan hesapları kullanır. Hesaplar için kimlik bilgileri olarak parolaları kullanmayı seçerseniz, bu kimlik bilgileri tabloda depolanır user
. Bu parolalar PostgreSQL'de depolandığından, parolaların döndürmesini kendiniz yönetmeniz gerekir.
Bu makalede Python kullanarak geliştirme konusunda bilgi sahibi olduğunuz ancak esnek PostgreSQL için Azure Veritabanı sunucuyla çalışmaya yeni olduğunuz varsayılır.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- PostgreSQL için Azure Veritabanı esnek sunucu örneği. esnek PostgreSQL için Azure Veritabanı sunucu örneği oluşturmak için bkz. PostgreSQL için Azure Veritabanı - Esnek Sunucu örneği oluşturma.
- Python 3.8+.
- En son pip paketi yükleyicisi.
İstemci iş istasyonunuz için güvenlik duvarı kuralları ekleme
- Özel erişim (VNet Tümleştirmesi) ile PostgreSQL için Azure Veritabanı esnek sunucu örneğinizi oluşturduysanız, sunucunuzla aynı sanal ağ içindeki bir kaynaktan sunucunuza bağlanmanız gerekir. Bir sanal makine oluşturabilir ve bunu PostgreSQL için Azure Veritabanı esnek sunucu örneğiniz ile oluşturulan sanal ağa ekleyebilirsiniz. Azure CLI kullanarak PostgreSQL için Azure Veritabanı - Esnek Sunucu sanal ağı oluşturma ve yönetme bölümüne bakın.
- Genel erişim (izin verilen IP adresleri) ile PostgreSQL için Azure Veritabanı esnek sunucu örneğinizi oluşturduysanız, yerel IP adresinizi sunucunuzdaki güvenlik duvarı kuralları listesine ekleyebilirsiniz. Azure CLI kullanarak PostgreSQL için Azure Veritabanı - Esnek Sunucu güvenlik duvarı kuralları oluşturma ve yönetme bölümüne bakın.
Sunucuda Microsoft Entra tümleştirmesini yapılandırma (yalnızca parolasız)
Parolasız kimlik doğrulaması adımlarını izliyorsanız, sunucu örneğiniz için Microsoft Entra kimlik doğrulaması yapılandırılmalıdır ve sunucu örneğinde Microsoft Entra yöneticisi olarak atanmalısınız. Microsoft Entra kimlik doğrulamasının yapılandırıldığından ve sunucu örneğinizde Microsoft Entra yöneticisi olarak atandığınızdan emin olmak için Microsoft Entra tümleştirmesini yapılandırma makalesindeki adımları izleyin.
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.
Azure SDK genelinde Microsoft Entra belirteci kimlik doğrulaması desteği sağlayan azure-identity kitaplığını yükleyin.
pip install azure-identity
Kimlik doğrulama kodu ekleme
Bu bölümde, çalışma dizininize kimlik doğrulama kodu ekler ve sunucu örneğiniz ile kimlik doğrulaması ve yetkilendirme için gereken ek adımları gerçekleştirirsiniz.
Aşağıdaki kodu bir düzenleyiciye kopyalayın ve get_conn.py adlı bir dosyaya kaydedin.
import urllib.parse import os from azure.identity import DefaultAzureCredential # IMPORTANT! This code is for demonstration purposes only. It's not suitable for use in production. # For example, tokens issued by Microsoft Entra ID have a limited lifetime (24 hours by default). # In production code, you need to implement a token refresh policy. 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']) sslmode = os.environ['SSLMODE'] # Use passwordless authentication via DefaultAzureCredential. # IMPORTANT! This code is for demonstration purposes only. DefaultAzureCredential() is invoked on every call. # In practice, it's better to persist the credential across calls and reuse it so you can take advantage of token # caching and minimize round trips to the identity provider. To learn more, see: # https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/identity/azure-identity/TOKEN_CACHING.md credential = DefaultAzureCredential() # Call get_token() to get a token from Microsft Entra ID and add it as the password in the URI. # Note the requested scope parameter in the call to get_token, "https://ossrdbms-aad.database.windows.net/.default". password = credential.get_token("https://ossrdbms-aad.database.windows.net/.default").token db_uri = f"postgresql://{dbuser}:{password}@{dbhost}/{dbname}?sslmode={sslmode}" return db_uri
Veritabanı bağlantı bilgilerini alın.
- Azure portalında PostgreSQL için Azure Veritabanı esnek sunucu adınızı arayın ve seçin.
- Sunucunun Genel Bakış sayfasında, tam Sunucu adını kopyalayın. Tam Sunucu adı her zaman my-server-name.postgres.database.azure.com> biçimindedir<.
- Soldaki menüde, Güvenlik'in altında Kimlik Doğrulaması'nı seçin. Hesabınızın Microsoft Entra Admins altında listelendiğinden emin olun. Aksi takdirde, Sunucuda Microsoft Entra tümleştirmesini yapılandırma (yalnızca parolasız) adımlarını tamamlayın.
Bağlantı URI öğeleri için ortam değişkenlerini ayarlayın:
set DBHOST=<server-name> set DBNAME=<database-name> set DBUSER=<username> set SSLMODE=require
Komutlarda aşağıdaki yer tutucu değerlerini değiştirin:
<server-name>
azure portalından kopyaladığınız değerle birlikte.<username>
Azure kullanıcı adınız ile; mesela.john@contoso.com
.<database-name>
PostgreSQL için Azure Veritabanı esnek sunucu veritabanınızın adıyla. Sunucunuzu oluşturduğunuzda postgres adlı varsayılan veritabanı otomatik olarak oluşturuldu. SQL komutlarını kullanarak bu veritabanını kullanabilir veya yeni bir veritabanı oluşturabilirsiniz.
İş istasyonunuzda Azure'da oturum açın. Azure CLI, Azure PowerShell veya Azure Geliştirici CLI kullanarak oturum açabilirsiniz. Örneğin, Azure CLI aracılığıyla oturum açmak için şu komutu girin:
az login
Kimlik doğrulama kodu, Microsoft Entra Kimliği ile kimlik doğrulaması yapmak ve sunucu örneğinizde işlem yapmanıza izin veren bir belirteç almak için kullanır
DefaultAzureCredential
.DefaultAzureCredential
kimlik doğrulaması kimlik bilgisi türleri zincirini destekler. Desteklenen kimlik bilgileri arasında Azure CLI, Azure PowerShell veya Azure Developer CLI gibi geliştirici araçlarıyla oturum açtığınız kimlik bilgileri yer alır.
Python örneklerini çalıştırma
Bu makaledeki her kod örneği için:
Metin düzenleyicisinde yeni bir dosya oluşturun.
Kod örneğini dosyaya ekleyin.
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.
Proje klasörünüzün türüne ve ardından dosya adı ( örneğin
python postgres-insert.py
) yazınpython
.
Tablo oluşturma ve veri ekleme
Aşağıdaki kod örneği, işlevini kullanarak psycopg.connect
PostgreSQL için Azure Veritabanı esnek sunucu veritabanınıza 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
Verileri okuma
Aşağıdaki kod örneği, PostgreSQL için Azure Veritabanı esnek sunucu veritabanınıza bağlanır ve verileri okumak için SQL SELECT deyimiyle cursor.execute 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, PostgreSQL için Azure Veritabanı esnek sunucu veritabanınıza bağlanır ve verileri güncelleştirmek için SQL UPDATE 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()
# 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()
Veri silme
Aşağıdaki kod örneği, PostgreSQL için Azure Veritabanı esnek sunucu veritabanınıza 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()
İlgili içerik
- PostgreSQL için Azure Veritabanı - Esnek Sunucuyu yönetme.
- Hızlı Başlangıç: PostgreSQL için Azure Veritabanı esnek sunucunun bir örneğine bağlanmak ve verileri sorgulamak için Java kullanın.
- Hızlı Başlangıç: Esnek PostgreSQL için Azure Veritabanı sunucu örneğine bağlanmak ve verileri sorgulamak için .NET (C#) kullanın.
- Hızlı Başlangıç: Esnek PostgreSQL için Azure Veritabanı sunucu örneğine bağlanmak ve veri sorgulamak için Go dilini kullanın.
- Hızlı Başlangıç: Esnek PostgreSQL için Azure Veritabanı sunucu örneğine bağlanmak ve verileri sorgulamak için PHP kullanın.
- Hızlı Başlangıç: Esnek PostgreSQL için Azure Veritabanı sunucu örneğine bağlanmak ve veri sorgulamak için Azure CLI'yi kullanın.
- Hızlı Başlangıç: Power BI'da PostgreSQL için Azure Veritabanı - Esnek Sunucudan verileri içeri aktarma.