يستخدم البدء السريع لغة Python والاستعلام عن البيانات في قاعدة بيانات Azure للكشف عن الخادم المرن في نظام MySQL

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

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

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

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

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

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

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

إشعار

يعتمد نظام البدء السريع على منهج استعلام SQL الخام للاتصال بنظام MySQL. إذا كنت تستخدم إطار عمل ويب، فاستخدم الموصل الموصى به لإطار العمل، على سبيل المثال، mysqlclient ل Django.

  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
    

    يمكنك أيضا تثبيت موصل Python ل MySQL من mysql.com. لمزيد من المعلومات حول موصل MySQL ل Python، راجع دليل مطور MySQL Connector/Python.

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

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

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

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

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

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

استخدام نماذج التعليمات البرمجية للغة Python المذكور أدناه

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

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

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

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

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

    إشعار

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

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

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

تستورد التعليمات البرمجية مكتبة mysql.connector، وتستخدم الدالة connect() للاتصال بخادم مرن باستخدام الوسيطات في مجموعة التكوين. تستخدم التعليمات البرمجية مؤشرا على الاتصال، وينفذ الأسلوب 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>',
  'password':'<mypassword>',
  'database':'<mydatabase>'
}

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

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

استخدم التعليمات البرمجية التالية للاتصال وقراءة البيانات باستخدام عبارة الـ SQL: SELECT.

تستورد التعليمات البرمجية مكتبة mysql.connector، وتستخدم الدالة connect() للاتصال بخادم مرن باستخدام الوسيطات في مجموعة التكوين. تستخدم التعليمات البرمجية مؤشرا على الاتصال، وينفذ الأسلوب 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>',
  'password':'<mypassword>',
  'database':'<mydatabase>'
}

# 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، وتستخدم الدالة connect() للاتصال بخادم مرن باستخدام الوسيطات في مجموعة التكوين. تستخدم التعليمات البرمجية مؤشرا على الاتصال، وينفذ الأسلوب 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>',
  'password':'<mypassword>',
  'database':'<mydatabase>'
}

# 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;", (200, "banana"))
  print("Updated",cursor.rowcount,"row(s) of data.")

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

حذف البيانات

استخدم التعليمات البرمجية التالية للاتصال بالبيانات وإزالتها باستخدام عبارة DELETE SQL.

تستورد التعليمات البرمجية مكتبة mysql.connector، وتستخدم الدالة connect() للاتصال بخادم مرن باستخدام الوسيطات في مجموعة التكوين. تستخدم التعليمات البرمجية مؤشرا على الاتصال، وينفذ الأسلوب 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>',
  'password':'<mypassword>',
  'database':'<mydatabase>'
}

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

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