البدء السريع: يستخدم Python لتوصيل البيانات والاستعلام عنها في قاعدة بيانات Azure لنظام MySQL

ينطبق على: قاعدة بيانات Azure ل MySQL - خادم واحد

هام

قاعدة بيانات Azure لخادم MySQL الفردي على مسار الإيقاف. نوصي بشدة بالترقية إلى قاعدة بيانات Azure لخادم MySQL المرن. لمزيد من المعلومات حول الترحيل إلى خادم Azure Database for MySQL المرن، راجع ما الذي يحدث لقاعدة بيانات Azure لخادم MySQL الفردي؟

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

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

ستتعرف في هذا البدء السريع على:

تثبيت Python وموصل MySQL

تثبيت Python وموصل نظام MySQL لـ Python على جهاز الكمبيوتر الخاص بك باستخدام الخطوات التالية:

  1. قم بتنزيل وتثبيت Python 3.7 أو إصدار أحدث لنظام التشغيل الخاص بك. تأكد من إضافة Python إلى PATH، لأن موصل MySQL يتطلب ذلك.

  2. افتح موجه الأوامر أو bash shell، وتحقق من إصدار Python الخاص بك عن طريق التشغيل python -V باستخدام مفتاح V كبير.

  3. pip يتم تضمين مثبت الحزمة في أحدث إصدارات Python. قم بالتحديث pip إلى أحدث إصدار عن طريق تشغيل pip install -U pip.

    إذا pip لم يكن مثبتا، يمكنك تنزيله وتثبيته باستخدام get-pip.py. لمزيد من المعلومات، راجع التثبيت.

  4. استخدم pip لتثبيت موصل MySQL ل Python وتبعياته:

    pip install mysql-connector-python
    

الحصول على معلومات الاتصال

احصل على معلومات الاتصال التي تحتاجها للاتصال بقاعدة بيانات Azure لنظام MySQL من مدخل Azure. تحتاج اسم الخادم واسم قاعدة البيانات وبيانات اعتماد تسجيل الدخول.

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. في شريط بحث المدخل، ابحث عن قاعدة بيانات Azure لخادم MySQL الذي أنشأته وحدده، مثل mydemoserver.

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

تشغيل نماذج التعليمات البرمجية ل Python

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

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

  2. إضافة نماذج التعليمات البرمجية في الملف. في التعليمات البرمجية، استبدل <mydemoserver><myadmin><mypassword>العناصر النائبة و و <mydatabase> بقيم خادم MySQL وقاعدة البيانات.

  3. تمكين SSL بشكل افتراضي على قاعدة بيانات Azure لخوادم MySQL. قد تحتاج إلى تنزيل شهادة DigiCertGlobalRootG2 SSL للاتصال من بيئتك المحلية. استبدل ssl_caالقيمة في التعليمات البرمجية بمسار إلى هذا الملف على الكمبيوتر.

  4. احفظ الملف في مجلد مشروع بملحق .py ، مثل C:\pythonmysql\createtable.py أو /home/username/pythonmysql/createtable.py.

  5. لتشغيل التعليمات البرمجية، افتح موجه أوامر أو bash shell وغير الدليل إلى مجلد المشروع، على سبيل المثال cd pythonmysql. python اكتب الأمر متبوعا باسم الملف، على سبيل المثال python createtable.py، واضغط على مفتاح الإدخال Enter.

    إشعار

    في Windows، إذا لم يتم العثور على python.exe ، فقد تحتاج إلى إضافة مسار Python إلى متغير بيئة PATH، أو توفير المسار الكامل إلى python.exe، على سبيل المثال C:\python27\python.exe createtable.py.

الخطوة 1: إنشاء جدول وإدراج البيانات

استخدم التعليمات البرمجية التالية للاتصال بالخادم وقاعدة البيانات وإنشاء جدول وتحميل البيانات باستخدام عبارة INSERT SQL. تستورد التعليمات البرمجية مكتبة mysql.connector، وتستخدم الأسلوب :

import mysql.connector
from mysql.connector import errorcode

# Obtain connection string information from the portal

config = {
  'host':'<mydemoserver>.mysql.database.azure.com',
  'user':'<myadmin>@<mydemoserver>',
  'password':'<mypassword>',
  'database':'<mydatabase>',
  'client_flags': [mysql.connector.ClientFlag.SSL],
  'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}

# Construct connection string

try:
   conn = mysql.connector.connect(**config)
   print("Connection established")
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with the user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  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 table
  cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
  print("Finished creating table.")

  # Insert some data into table
  cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
  print("Inserted",cursor.rowcount,"row(s) of data.")
  cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
  print("Inserted",cursor.rowcount,"row(s) of data.")
  cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
  print("Inserted",cursor.rowcount,"row(s) of data.")

  # Cleanup
  conn.commit()
  cursor.close()
  conn.close()
  print("Done.")

الخطوة 2: قراءة البيانات

استخدم التعليمات البرمجية التالية للاتصال وقراءة البيانات باستخدام عبارة الـ SQL: SELECT. تستورد التعليمات البرمجية مكتبة mysql.connector، وتستخدم أسلوب cursor.execute() لتنفيذ استعلام SQL مقابل قاعدة بيانات MySQL.

تقرأ التعليمات البرمجية صفوف البيانات باستخدام أسلوب fetchall() وتحتفظ بمجموعة النتائج في صف مجموعة وتستخدم for مكرر لتكرار الصفوف.

import mysql.connector
from mysql.connector import errorcode

# Obtain connection string information from the portal

config = {
  'host':'<mydemoserver>.mysql.database.azure.com',
  'user':'<myadmin>@<mydemoserver>',
  'password':'<mypassword>',
  'database':'<mydatabase>',
  'client_flags': [mysql.connector.ClientFlag.SSL],
  'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}

# Construct connection string

try:
   conn = mysql.connector.connect(**config)
   print("Connection established")
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with the user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  cursor = conn.cursor()

  # Read data
  cursor.execute("SELECT * FROM inventory;")
  rows = cursor.fetchall()
  print("Read",cursor.rowcount,"row(s) of data.")

  # 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()
  print("Done.")

الخطوة الثالثة: تحديث البيانات

استخدم التعليمات البرمجية التالية للاتصال وتحديث البيانات باستخدام عبارة UPDATE SQL. تستورد التعليمات البرمجية مكتبة mysql.connector، وتستخدم أسلوب cursor.execute() لتنفيذ استعلام SQL مقابل قاعدة بيانات MySQL.

import mysql.connector
from mysql.connector import errorcode

# Obtain connection string information from the portal

config = {
  'host':'<mydemoserver>.mysql.database.azure.com',
  'user':'<myadmin>@<mydemoserver>',
  'password':'<mypassword>',
  'database':'<mydatabase>',
  'client_flags': [mysql.connector.ClientFlag.SSL],
  'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}

# Construct connection string

try:
   conn = mysql.connector.connect(**config)
   print("Connection established")
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with the user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  cursor = conn.cursor()

  # Update a data row in the table
  cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (300, "apple"))
  print("Updated",cursor.rowcount,"row(s) of data.")

  # Cleanup
  conn.commit()
  cursor.close()
  conn.close()
  print("Done.")

الخطوة الرابعة: حذف البيانات

استخدم التعليمات البرمجية التالية للاتصال بالبيانات وإزالتها باستخدام عبارة DELETE SQL. تستورد التعليمات البرمجية مكتبة mysql.connector، وتستخدم أسلوب cursor.execute() لتنفيذ استعلام SQL مقابل قاعدة بيانات MySQL.

import mysql.connector
from mysql.connector import errorcode

# Obtain connection string information from the portal

config = {
  'host':'<mydemoserver>.mysql.database.azure.com',
  'user':'<myadmin>@<mydemoserver>',
  'password':'<mypassword>',
  'database':'<mydatabase>',
  'client_flags': [mysql.connector.ClientFlag.SSL],
  'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}

# Construct connection string

try:
   conn = mysql.connector.connect(**config)
   print("Connection established")
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with the user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  cursor = conn.cursor()

  # Delete a data row in the table
  cursor.execute("DELETE FROM inventory WHERE name=%(param1)s;", {'param1':"orange"})
  print("Deleted",cursor.rowcount,"row(s) of data.")
  
  # Cleanup
  conn.commit()
  cursor.close()
  conn.close()
  print("Done.")  

تنظيف الموارد

لتنظيف جميع الموارد المستخدمة في أثناء هذا التشغيل السريع حذف مجموعة الموارد باستخدام الأمر التالي:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

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