البدء السريع: يستخدم Python لتوصيل البيانات والاستعلام عنها في قاعدة بيانات Azure لنظام MySQL
ينطبق على: قاعدة بيانات Azure ل MySQL - خادم واحد
هام
قاعدة بيانات Azure لخادم MySQL الفردي على مسار الإيقاف. نوصي بشدة بالترقية إلى قاعدة بيانات Azure لخادم MySQL المرن. لمزيد من المعلومات حول الترحيل إلى خادم Azure Database for MySQL المرن، راجع ما الذي يحدث لقاعدة بيانات Azure لخادم MySQL الفردي؟
في هذا البدء السريع، يمكنك الاتصال بقاعدة بيانات Azure لنظام MySQL باستخدام Python. ثم يمكنك استخدام عبارات SQL للاستعلام عن البيانات وإدراجها وتحديثها وحذفها في قاعدة البيانات من Mac وUbuntu Linux ومنصات Windows.
المتطلبات الأساسية
ستتعرف في هذا البدء السريع على:
حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
إنشاء قاعدة بيانات Azure لخادم MySQL واحد باستخدام مدخل Microsoft Azure
أو Azure CLI إذا لم يكن لديك حساباً.بناءً على ما إذا كنت تستخدم الوصول العام أو الخاص، أكمل أحد الإجراءات أدناه لتمكين الاتصال.
الإجراء أسلوب الاتصال الدلائل الإرشادية تكوين قواعد جدار الحماية عامة بوابة
المبادره القطريهتكوين نقطة نهاية الخدمة عامة بوابة
المبادره القطريهتهيئة الارتباط الخاص خاصة بوابة
المبادره القطريه
تثبيت Python وموصل MySQL
تثبيت Python وموصل نظام MySQL لـ Python على جهاز الكمبيوتر الخاص بك باستخدام الخطوات التالية:
قم بتنزيل وتثبيت 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
الحصول على معلومات الاتصال
احصل على معلومات الاتصال التي تحتاجها للاتصال بقاعدة بيانات Azure لنظام MySQL من مدخل Azure. تحتاج اسم الخادم واسم قاعدة البيانات وبيانات اعتماد تسجيل الدخول.
قم بتسجيل الدخول إلى بوابة Azure.
في شريط بحث المدخل، ابحث عن قاعدة بيانات Azure لخادم MySQL الذي أنشأته وحدده، مثل mydemoserver.
من صفحة نظرة عامة على الخادم، قم بتدوين اسم الخادم واسم تسجيل دخول مسؤول الخادم. إذا نسيت كلمة المرور، فإنه يمكنك أيضا إعادة تعيين كلمة المرور من هذه الصفحة.
تشغيل نماذج التعليمات البرمجية ل Python
لكل عينة من الرموز البرمجية في هذه المقالة:
إنشاء ملف جديد في محرر نص.
إضافة نماذج التعليمات البرمجية في الملف. في التعليمات البرمجية، استبدل
<mydemoserver>
<myadmin>
<mypassword>
العناصر النائبة و و<mydatabase>
بقيم خادم MySQL وقاعدة البيانات.تمكين SSL بشكل افتراضي على قاعدة بيانات Azure لخوادم MySQL. قد تحتاج إلى تنزيل شهادة DigiCertGlobalRootG2 SSL للاتصال من بيئتك المحلية. استبدل
ssl_ca
القيمة في التعليمات البرمجية بمسار إلى هذا الملف على الكمبيوتر.احفظ الملف في مجلد مشروع بملحق .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
.
الخطوة 1: إنشاء جدول وإدراج البيانات
استخدم التعليمات البرمجية التالية للاتصال بالخادم وقاعدة البيانات وإنشاء جدول وتحميل البيانات باستخدام عبارة INSERT SQL. تستورد التعليمات البرمجية مكتبة mysql.connector، وتستخدم الأسلوب :
- الدالة connect() للاتصال بقاعدة بيانات Azure ل MySQL باستخدام الوسيطات الموجودة في مجموعة التكوين.
- ينفذ أسلوب cursor.execute() استعلام SQL مقابل قاعدة بيانات MySQL.
- cursor.close() عند الانتهاء من استخدام مؤشر.
- conn.close() لإغلاق الاتصال.
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