الاتصال بخدمة Cloud SQL باستخدام دوال Cloud

1. مقدمة

تاريخ آخر تعديل: 11/05/2021

ما هي خدمة Cloud SQL؟

Cloud SQL هي خدمة قاعدة بيانات مُدارة بالكامل تسهِّل إعداد قواعد البيانات الارتباطية وصيانتها وإدارتها وإدارتها على Google Cloud Platform.

ما هي وظائف السحابة الإلكترونية؟

Cloud Functions هي حلّ حوسبة خفيف يتيح للمطوّرين إنشاء وظائف مستقلة لغرض واحد تستجيب لأحداث السحابة الإلكترونية بدون الحاجة إلى إدارة خادم أو بيئة وقت تشغيل.

ما الذي ستنشئه

في هذا الدرس التطبيقي حول الترميز، ستكتب دالة السحابة الإلكترونية في لغة بايثون. الدالة:

  • يتصل بمثيل قاعدة بيانات Cloud SQL.
  • يرسل عبارة INSERT إلى جدول في قاعدة البيانات.

المعلومات التي ستطّلع عليها

  • كيفية الوصول إلى واجهة مستخدم Cloud Functions على الويب في Google Cloud Console.
  • كيفية إنشاء دالة سحابية
  • كيفية اختبار دالة السحابة.
  • كيفية الاتصال بمثيل قاعدة بيانات Cloud SQL (إما MySQL أو PostgreSQL) باستخدام Python.
  • كيفية الكتابة في قاعدة بيانات Cloud SQL باستخدام Python.

2. المتطلبات

  • متصفح، مثل Chrome أو Firefox
  • مشروع Google Cloud Platform يحتوي على مثيل Cloud SQL.
  • إذا لم يكن لديك حساب، يمكنك اتّباع الخطوات الواردة في Quickstart في MySQL أو PostgreSQL. نفِّذ جميع الخطوات باستثناء عملية التنظيف.
  • يحتوي المثيل على قاعدة بيانات MySQL أو PostgreSQL مع جدول.
  • اسم اتصال المثيل واسم قاعدة البيانات والجدول واسم مستخدم قاعدة البيانات وكلمة مرور المستخدم.
  • حساب خدمة يتضمّن دور عميل Cloud SQL.

3- إعداد التعليمة البرمجية وإنشاء الدالة

تحضير الرمز

يمكنك العثور على رمز دالة Cloud للاتصال بقاعدة بيانات Cloud SQL هنا. تعتمد بعض قيم المتغيرات على ما إذا كانت قاعدة بيانات Cloud SQL هي MySQL أو PostgreSQL، وتعتمد على معلومات قاعدة البيانات الخاصة بك.

تتضمن واجهة مستخدم Cloud Functions في Cloud Console محرِّر نصوص. يمكنك نسخ/لصق الرمز البرمجي هناك وتعديله أو تعديل الرمز محليًا أولاً، ثم نسخه ولصقه في واجهة المستخدم.

requirements.txt

# This file tells Python which modules it needs to import
SQLAlchemy==1.3.12      
# If your database is MySQL, uncomment the following line:
#PyMySQL==0.9.3
# If your database is PostgreSQL, uncomment the following line:
#pg8000==1.13.2

main.py

# This file contains all the code used in the codelab. 
import sqlalchemy

# Depending on which database you are using, you'll set some variables differently. 
# In this code we are inserting only one field with one value. 
# Feel free to change the insert statement as needed for your own table's requirements.

# Uncomment and set the following variables depending on your specific instance and database:
#connection_name = ""
#table_name = ""
#table_field = ""
#table_field_value = ""
#db_name = ""
#db_user = ""
#db_password = ""

# If your database is MySQL, uncomment the following two lines:
#driver_name = 'mysql+pymysql'
#query_string = dict({"unix_socket": "/cloudsql/{}".format(connection_name)})

# If your database is PostgreSQL, uncomment the following two lines:
#driver_name = 'postgres+pg8000'
#query_string =  dict({"unix_sock": "/cloudsql/{}/.s.PGSQL.5432".format(connection_name)})

# If the type of your table_field value is a string, surround it with double quotes.

def insert(request):
    request_json = request.get_json()
    stmt = sqlalchemy.text('insert into {} ({}) values ({})'.format(table_name, table_field, table_field_value))
    
    db = sqlalchemy.create_engine(
      sqlalchemy.engine.url.URL(
        drivername=driver_name,
        username=db_user,
        password=db_password,
        database=db_name,
        query=query_string,
      ),
      pool_size=5,
      max_overflow=2,
      pool_timeout=30,
      pool_recycle=1800
    )
    try:
        with db.connect() as conn:
            conn.execute(stmt)
    except Exception as e:
        return 'Error: {}'.format(str(e))
    return 'ok'

إنشاء الدالة

  1. في المتصفّح، انتقِل إلى واجهة مستخدم وحدة تحكُّم Google Cloud Platform.
  2. اختَر Cloud Functions من قائمة التنقّل.
  3. انقر على إنشاء وظيفة في شريط الأزرار.
  4. أدخِل اسمًا للدالة.
  5. اختَر مشغِّل HTTP. (دوِّن عنوان URL المعروض أسفل عنصر المشغِّل. ستكون بالتنسيق التالي: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME).
  6. ضمن المصادقة، اختَر السماح بالاستدعاءات التي لم تتم مصادقتها لإتاحة الدالة للجميع.
  7. وسِّع إعدادات وقت التشغيل والإصدار والاتصالات في حساب خدمة وقت التشغيل، اختَر حساب خدمة لديه دور عميل Cloud SQL.
  8. انقر على الزر التالي.
  9. اختَر Python 3.7 ليكون خيار وقت التشغيل.
  10. حدّد محرر مضمّن لخيار رمز المصدر.
  11. في نوافذ محرّر رمز المصدر، احذف المحتوى الحالي لكلٍّ من requirements.txt وmain.py، واستبدلهما بنسخ معدلة من الرمز أعلاه.
  12. أدخِل insert كاسم نقطة الدخول.
  13. انقر على نشر وانتظِر حتى يتم إنشاء الدالة. يتوقف مؤشر سريان العمل عن الدوران وتظهر علامة اختيار خضراء على الصفحة التالية عندما تكون الدالة جاهزة للاستخدام.

4. اختبار الدالة

  1. في المتصفّح، انتقِل إلى واجهة مستخدم وحدة تحكُّم Google Cloud Platform.
  2. اختَر Cloud Functions من قائمة التنقّل.
  3. انقر فوق اسم الدالة التي أنشأتها سابقًا.
  4. انقر على رابط الاختبار في منتصف الصفحة.
  5. اختَر اختبار الوظيفة.
  6. من المفترض أن تظهر النتيجة: حسنًا (إذا تعذَّر الاختبار، سيظهر لك تتبُّع تسلسل استدعاء الدوال البرمجية للمساعدة في تصحيح الأخطاء).
  7. في المتصفِّح، انتقِل إلى عنوان URL الذي حفظته سابقًا عند إنشاء الدالة. إذا نسيت حفظ عنوان URL، يمكنك الحصول عليه من خلال الرابط TRIGGER.
  8. من المفترض أن تظهر النتيجة OK في المتصفّح أيضًا.

5- تَنظيم

لتجنُّب تحمُّل أي رسوم من حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا الدرس التطبيقي حول الترميز، اتّبِع الخطوات التالية.

حذف مثيل Cloud SQL

  1. انتقِل إلى صفحة مثيلات Cloud SQL في Google Cloud Console.
  2. اختَر المثيل الذي أنشأته لفتح صفحة "تفاصيل المثيل".
  3. في شريط الرموز أعلى الصفحة، انقر على حذف.
  4. في نافذة "حذف المثيل"، اكتب اسم المثيل، ثم انقر على حذف لحذف المثيل. ولا يمكنك إعادة استخدام اسم المثيل لمدة 7 أيام تقريبًا بعد حذف المثيل.

حذف دالة السحابة الإلكترونية

  1. انتقِل إلى صفحة دوال Cloud في Google Cloud Console.
  2. اختَر النقاط الثلاث ضمن الإجراءات للدالة، ثم اختَر حذف.
  3. أكِّد الحذف بالنقر على الزر حذف.

6- تهانينا

تهانينا، لقد نجحت في إنشاء دالة Cloud تعمل مع Cloud SQL.

على وجه التحديد، أنشأتَ دالة Cloud تُستخدَم في الاتصال بمثيل قاعدة بيانات Cloud SQL والكتابة إليه.

7. ما هي الخطوات التالية؟

يمكنك الاطّلاع على بعض هذه الدروس التطبيقية حول الترميز...

قراءة إضافية

المستندات المرجعية