يستخدم البدء السريع لغة Python والاستعلام عن البيانات في قاعدة بيانات Azure للكشف عن الخادم المرن في نظام MySQL
ينطبق على: قاعدة بيانات Azure ل MySQL - خادم مرن
في هذا التشغيل السريع، يمكنك الاتصال بقاعدة بيانات Azure لخادم MySQL المرن باستخدام Python. ثم يمكنك استخدام عبارات SQL للاستعلام عن البيانات وإدراجها وتحديثها وحذفها في قاعدة البيانات من Mac وUbuntu Linux ومنصات Windows.
تفترض هذه المقالة أنك على اطلاع بالتطوير باستخدام لغة Python ولكنك جديد في العمل مع قاعدة بيانات Azure للخادم المرن في نظام MySQL.
المتطلبات الأساسية
حساب Azure مع اشتراك نشط.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ. حاليا، باستخدام حساب Azure المجاني، يمكنك تجربة Azure Database for MySQL - Flexible Server مجانا لمدة 12 شهرا. لمزيد من المعلومات، راجع تجربة Azure Database for MySQL - Flexible Server مجانا.
مثيل خادم مرن لقاعدة بيانات Azure ل MySQL. لإنشاء قاعدة بيانات Azure لمثيل خادم MySQL المرن، راجع إنشاء قاعدة بيانات Azure لمثيل خادم MySQL المرن باستخدام مدخل Microsoft Azure أو إنشاء قاعدة بيانات Azure لمثيل خادم MySQL المرن باستخدام Azure CLI.
إعداد محطة عمل العميل
- إذا أنشأت خادمك المرن باستخدام وصول خاص (VNet Integration)، فستحتاج إلى الاتصال بخادمك من مورد ضمن شبكة VNet نفسها كخادمك. يمكنك إنشاء جهاز ظاهري وإضافته إلى VNet التي تم إنشاؤها باستخدام الخادم المرن. راجع إنشاء وإدارة قاعدة بيانات Azure للشبكة الظاهرية لخادم MySQL المرن باستخدام Azure CLI.
- إذا أنشأت خادمك المرن باستخدام الوصول العام (عناوين IP المسموح بها)، يمكنك إضافة عنوان IP المحلي الخاص بك إلى قائمة قواعد جدار الحماية على الخادم الخاص بك. راجع إنشاء وإدارة قواعد جدار حماية الخادم المرن لقاعدة البيانات Azure Database for MySQL باستخدام Azure CLI.
تثبيت Python وموصل MySQL
تثبيت Python وموصل نظام MySQL لـ Python على جهاز الكمبيوتر الخاص بك باستخدام الخطوات التالية:
إشعار
يعتمد نظام البدء السريع على منهج استعلام SQL الخام للاتصال بنظام MySQL. إذا كنت تستخدم إطار عمل ويب، فاستخدم الموصل الموصى به لإطار العمل، على سبيل المثال، mysqlclient ل Django.
قم بتنزيل وتثبيت Python 3.7 أو إصدار أحدث لنظام التشغيل الخاص بك. تأكد من إضافة Python إلى
PATH
، لأن موصل MySQL يتطلب ذلك.افتح موجه الأوامر أو
bash
shell، وتحقق من إصدار Python الخاص بك عن طريق التشغيلpython -V
باستخدام مفتاح V كبير.pip
يتم تضمين مثبت الحزمة في أحدث إصدارات Python. قم بالتحديثpip
إلى أحدث إصدار عن طريق تشغيلpip install -U pip
.إذا
pip
لم يكن مثبتا، يمكنك تنزيله وتثبيته باستخدامget-pip.py
. لمزيد من المعلومات، راجع التثبيت.استخدم
pip
لتثبيت موصل MySQL ل Python وتبعياته:pip install mysql-connector-python
يمكنك أيضا تثبيت موصل Python ل MySQL من mysql.com. لمزيد من المعلومات حول موصل MySQL ل Python، راجع دليل مطور MySQL Connector/Python.
الحصول على معلومات الاتصال
احصل على معلومات الاتصال التي تحتاجها للاتصال بقاعدة بيانات Azure للخادم المرن لنظام MySQL من مدخل Azure. تحتاج اسم الخادم واسم قاعدة البيانات، وتسجيل دخول بيانات الاعتماد.
قم بتسجيل الدخول إلى بوابة Azure.
في شريط بحث المدخل، ابحث عن مثيل Azure Database for MySQL Flexible Server الذي أنشأته وحدده، مثل mydemoserver.
من صفحة نظرة عامة على الخادم، قم بتدوين اسم الخادم واسم تسجيل دخول مسؤول الخادم. إذا نسيت كلمة المرور، فإنه يمكنك أيضا إعادة تعيين كلمة المرور من هذه الصفحة.
نماذج التعليمات البرمجية
استخدام نماذج التعليمات البرمجية للغة Python المذكور أدناه
لكل عينة من الرموز البرمجية في هذه المقالة:
إنشاء ملف جديد في محرر نص.
إضافة نماذج التعليمات البرمجية في الملف. في التعليمات البرمجية، استبدل
<mydemoserver>
<myadmin>
<mypassword>
العناصر النائبة و و<mydatabase>
بقيم خادم MySQL وقاعدة البيانات.احفظ الملف في مجلد مشروع بملحق .py ، مثل C:\pythonmysql\createtable.py أو /home/username/pythonmysql/createtable.py.
لتشغيل التعليمات البرمجية، افتح موجه أوامر أو
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.")
الخطوات التالية
- الاتصال المشفر باستخدام أمان طبقة النقل (TLS 1.2) في قاعدة بيانات Azure لخادم MySQL المرن.
- تعرف على المزيد حول الشبكات في Azure Database for MySQL Flexible Server.
- قم بإنشاء وإدارة قواعد جدار حماية الخادم المرن لقاعدة البيانات Azure Database for MySQL باستخدام مدخل Azure.
- قم بإنشاء وإدارة الشبكة الظاهرية للخادم المرن لقاعدة البيانات Azure Database for MySQL باستخدام مدخل Azure.