التشغيل السريع: استخدم Python للاتصال، والاستعلام عن البيانات في قاعدة بيانات Azure لـ PostgreSQL- الخادم المرن

يطبق على: قاعدة بيانات Azure لـ PostgreSQL - الخادم المرن

في هذا التشغيل السريع، يمكنك الاتصال بمثيل خادم مرن لقاعدة بيانات Azure ل PostgreSQL باستخدام Python. ثم يمكنك استخدام عبارات SQL للاستعلام عن البيانات وإدراجها وتحديثها وحذفها في قاعدة البيانات من Mac وUbuntu Linux ومنصات Windows.

تفترض هذه المقالة أنك على دراية بالتطوير باستخدام Python، ولكنك جديد في العمل مع قاعدة بيانات Azure لخادم PostgreSQL المرن.

المتطلبات الأساسية

إعداد محطة عمل العميل

قم بتثبيت مكتبات Python لـ PostgreSQL

تتيح الوحدة psycopg2 الاتصال بقاعدة بيانات PostgreSQL والاستعلام عنها، وهي متوفرة كحزمة عجلة Linux أو macOS أو Windows. تثبيت الإصدار الثنائي من الوحدة النمطية، بما في ذلك كافة التبعيات.

لتثبيت psycopg2، افتح terminal أو موجه الأوامر وقم بتشغيل الأمر pip install psycopg2.

الحصول على معلومات الاتصال بقاعدة البيانات

يتطلب الاتصال إلى قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن اسم الخادم المؤهل بالكامل وبيانات اعتماد تسجيل الدخول. يمكنك الحصول على هذه المعلومات من مدخل Microsoft Azure.

  1. في مدخل Microsoft Azure، ابحث عن اسم خادم Azure Database for PostgreSQL المرن وحدده.

  2. في صفحة "Overview" للخادم، انسخ "Server name" و"Admin username". يظهر اسم الخادم المؤهل بالكامل دائمًا في صورة <اسم - الخادم - الخاص بي>.postgres.database.azure.com.

    كما ستحتاج أيضًا لكلمة مرور المستخدم المسؤول. إذا نسيت ذلك، يمكنك إعادة تعيينه من صفحة النظرة العامة.

كيفية تشغيل أمثلة Python

لكل عينة من الرموز البرمجية في هذه المقالة:

  1. إنشاء ملف جديد في محرر نص.

  2. إضافة نماذج التعليمات البرمجية في الملف. في التعليمات البرمجية، استبدل:

    • القيم <server-name> و<admin-username> بتلك التي قمت بنسخها من مدخل Microsoft Azure.
    • <admin-password> بكلمة مرور الخادم.
    • <database-name> باسم قاعدة بيانات Azure Database for PostgreSQL المرنة. تم إنشاء قاعدة بيانات افتراضية تسمى postgres تلقائيا عند إنشاء الخادم الخاص بك. يمكنك إعادة تسمية قاعدة البيانات هذه، أو إنشاء قاعدة بيانات جديدة باستخدام أوامر SQL.
  3. احفظ الملف في مجلد المشروع باستخدام ملحق .py ، مثل postgres-insert.py. بالنسبة لنظام التشغيل Windows ، تأكد من تحديد ترميز UTF-8 عند حفظ الملف.

  4. لتشغيل الملف، قم بالتغيير إلى مجلد المشروع في واجهة سطر الأوامر، واكتب python متبوعا باسم الملف، على سبيل المثال python postgres-insert.py.

أنشئ جدول، وأدرج البيانات

يتصل مثال التعليمات البرمجية التالي بقاعدة بيانات Azure لقاعدة بيانات الخادم المرن PostgreSQL باستخدام الدالة 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()

عند نجاح تشغيل التعليمة البرمجية يُنتج المخرجات التالية:

Command-line output

اقرأ البيانات

يتصل مثال التعليمات البرمجية التالي بقاعدة بيانات Azure Database for PostgreSQL المرنة ويستخدم cursor.execute مع عبارة SQL SELECT لقراءة البيانات. تقبل هذه الدالة استعلامًا وترجع مجموعة نتائج لتكرارها باستخدام cursor.fetchall()

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

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

تحديث البيانات

يتصل مثال التعليمات البرمجية التالي بقاعدة بيانات Azure Database for PostgreSQL المرنة ويستخدم cursor.execute مع عبارة SQL UPDATE لتحديث البيانات.

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

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

حذف البيانات

يتصل مثال التعليمات البرمجية التالي بقاعدة بيانات Azure Database for PostgreSQL المرنة ويستخدم cursor.execute مع عبارة SQL DELETE لحذف عنصر مخزون قمت بإدراجه مسبقا.

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

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

الخطوات التالية