يستخدم البدء السريع لغة Python والاستعلام عن البيانات في قاعدة بيانات Azure للكشف عن الخادم المرن في نظام MySQL
ينطبق على: قاعدة بيانات Azure لـMySQL - خادم مرن
في هذا التشغيل السريع، يمكنك الاتصال بخادم Azure Database for 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 Database for MySQL، راجع إنشاء قاعدة بيانات Azure لمثيل خادم MySQL المرن باستخدام مدخل Microsoft Azure أو إنشاء مثيل خادم مرن لقاعدة بيانات Azure ل MySQL باستخدام Azure CLI.
إعداد محطة عمل العميل
- إذا أنشأت خادمك المرن باستخدام وصول خاص (VNet Integration)، فستحتاج إلى الاتصال بخادمك من مورد ضمن شبكة VNet نفسها كخادمك. يمكنك إنشاء جهاز ظاهري وإضافته إلى VNet التي تم إنشاؤها باستخدام الخادم المرن. راجع إنشاء شبكة ظاهرية مرنة لخادم Azure Database for 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 الاتصال or ل Python، راجع دليل مطور MySQL الاتصال or/Python.
الحصول على معلومات الاتصال
احصل على معلومات الاتصال التي تحتاجها للاتصال بقاعدة بيانات Azure لخادم MySQL المرن من مدخل Microsoft Azure. تحتاج اسم الخادم واسم قاعدة البيانات، وتسجيل دخول بيانات الاعتماد.
قم بتسجيل الدخول إلى بوابة Azure.
في شريط البحث في المدخل، ابحث عن مثيل خادم Azure Database for MySQL المرن الذي أنشأته وحدده، مثل 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 لخادم MySQL المرن.
- إنشاء قواعد جدار حماية الخادم المرنة ل Azure Database for MySQL وإدارتها باستخدام مدخل Microsoft Azure.
- إنشاء شبكة ظاهرية مرنة لخادم Azure Database for MySQL وإدارتها باستخدام مدخل Microsoft Azure.