الصورة عن طريق جونستوكر على Freepik
منذ فترة كتبت درسا عن كتابة كود بايثون الفعال. تحدثت فيه عن استخدام مديري السياق وعبارة with لإدارة الموارد بكفاءة.
لقد استخدمت مثالًا بسيطًا لمعالجة الملفات لإظهار كيفية إغلاق الملفات تلقائيًا عند انتهاء التنفيذ من الكتلة - حتى لو كان هناك استثناء.
على الرغم من أن التعامل مع الملفات يعد مثالًا أوليًا جيدًا، إلا أنه قد يصبح مملًا بسرعة. ولهذا السبب أود أن أتطرق إلى الاستخدامات الأخرى المثيرة للاهتمام لمديري السياق - بما يتجاوز معالجة الملفات - في هذا البرنامج التعليمي. سنركز على التعامل مع اتصالات قاعدة البيانات، وإدارة العمليات الفرعية، وحساب الفاصلة العائمة عالية الدقة.
يسمح لك مديرو السياق في Python بكتابة تعليمات برمجية أكثر وضوحًا عند العمل مع الموارد. أنها توفر صيغة موجزة لإعداد الموارد وتمزيقها من خلال:
- An أدخل المنطق الذي يتم استدعاؤه عندما يدخل التنفيذ إلى السياق و
- An خروج يتم استدعاء المنطق عندما يخرج التنفيذ من السياق
أبسط مثال على ذلك هو التعامل مع الملفات. هنا نستخدم open()
وظيفة في with
بيان للحصول على معالج الملف:
with open('filename.txt', 'w') as file:
file.write('Something random')
يؤدي هذا إلى اكتساب المورد - كائن الملف - الذي يتم استخدامه (نكتب في الملف) داخل كتلة التعليمات البرمجية. يتم إغلاق الملف بمجرد خروج التنفيذ من السياق؛ لذلك لا يوجد تسرب للموارد.
يمكنك كتابة النسخة العامة من هذا مثل هذا:
with some_context() as ctx:
# do something useful on the resource!
# resource cleanup is automatic
والآن دعنا ننتقل إلى الأمثلة المحددة.
عندما تقوم بإنشاء تطبيقات بايثون، من الشائع جدًا الاتصال بقواعد البيانات والاستعلام عن الجداول التي تحتوي عليها. وسيبدو سير العمل للقيام بذلك كما يلي:
- قم بتثبيت موصل قاعدة البيانات للعمل مع قاعدة البيانات (مثل psycopg2 لـ Postgres وmysql-connector-python لقواعد بيانات MySQL).
- تحليل ملف التكوين لاسترداد معلمات الاتصال.
- استخدم
connect()
وظيفة لإنشاء اتصال بقاعدة البيانات.
الاتصال بقاعدة البيانات | الصورة من قبل المؤلف
بمجرد الاتصال بقاعدة البيانات، يمكنك إنشاء قاعدة بيانات للاستعلام عن قاعدة البيانات. قم بتشغيل الاستعلامات وجلب نتائج الاستعلام باستخدام أساليب التشغيل وجلب المؤشر.
الاستعلام عن ديسيبل | الصورة من قبل المؤلف
عند القيام بذلك، يمكنك إنشاء الموارد التالية: اتصال بقاعدة البيانات ومؤشر قاعدة البيانات. الآن دعونا نكتب مثالًا عامًا بسيطًا لنرى كيف يمكننا استخدام الاتصال وكائنات المؤشر كمديرين للسياق.
تحليل ملفات TOML في بايثون
خذ بعين الاعتبار نموذج ملف TOML، مثل db_config.toml، الذي يحتوي على المعلومات المطلوبة للاتصال بقاعدة البيانات:
# db_config.toml
[database]
host = "localhost"
port = 5432
database_name = "your_database_name"
user = "your_username"
password = "your_password"
ملاحظات: أنت بحاجة إلى Python 3.11 أو إصدار أحدث لاستخدامه تومليب.
بايثون لديها المدمج في تومليب الوحدة النمطية (المقدمة في Python 3.11) التي تتيح لك تحليل ملفات TOML. لذا يمكنك فتح الملف db_config.toml وتحليل محتوياته كما يلي:
import tomllib
with open('db_config.toml','rb') as file:
credentials = tomllib.load(file)['database']
لاحظ أننا قمنا بالنقر على قسم "قاعدة البيانات" في ملف db_config.toml. ال load()
ترجع الدالة قاموس بايثون. يمكنك التحقق من ذلك عن طريق طباعة محتويات credentials
:
print(credentials)
Output >>>
{'host': 'localhost', 'port': 5432, 'database_name': 'your_database_name', 'user': 'your_username', 'password': 'your_password'}
الاتصال بقاعدة البيانات
لنفترض أنك تريد الاتصال بقاعدة بيانات Postgres. يمكنك تثبيت موصل psycopg2 باستخدام النقطة:
pip install psycopg2
يمكنك استخدام كل من كائنات الاتصال والمؤشر مع العبارات كما هو موضح:
import psycopg2
# Connect to the database
with psycopg2.connect(**credentials) as conn:
# Inside this context, the connection is open and managed
with conn.cursor() as cur:
# Inside this context, the cursor is open and managed
cur.execute('SELECT * FROM my_table')
result = cur.fetchall()
print(result)
في هذا الكود:
- نستخدم
with
بيان لإنشاء سياق لإدارة اتصال قاعدة البيانات. - داخل هذا السياق، نقوم بإنشاء سياق آخر لإدارة مؤشر قاعدة البيانات. يتم إغلاق المؤشر تلقائيًا عند الخروج من هذا السياق الداخلي.
- ونظرًا لأن الاتصال يتم إغلاقه أيضًا عند الخروج من السياق الخارجي، فإن هذا البناء يضمن إدارة كل من الاتصال والمؤشر بشكل صحيح - مما يقلل من فرصة تسرب الموارد.
يمكنك استخدام بنية مشابهة عند العمل مع قواعد بيانات SQLite وMySQL أيضًا.
توفر وحدة العمليات الفرعية في Python وظيفة لتشغيل أوامر خارجية داخل برنامج Python النصي. ال subprocess.Popen()
يقوم المُنشئ بإنشاء عملية فرعية جديدة. والتي يمكنك استخدامها في with
بيان مثل ذلك:
import subprocess
# Run an external command and capture its output
with subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, text=True) as process:
output, _ = process.communicate()
print(output)
هنا نقوم بتشغيل أمر Bash ls -l
أمر لقائمة طويلة من الملفات في الدليل الحالي:
Output >>>
total 4
-rw-rw-r-- 1 balapriya balapriya 0 Jan 5 18:31 db_info.toml
-rw-rw-r-- 1 balapriya balapriya 267 Jan 5 18:32 main.py
يتم تحرير الموارد المرتبطة بالعملية الفرعية بمجرد خروج التنفيذ من سياق العملية with
بيان.
نوع البيانات العائمة المدمج في Python غير مناسب لحسابات الفاصلة العائمة عالية الدقة. لكنك تحتاج إلى دقة عالية عند التعامل مع البيانات المالية وقراءات أجهزة الاستشعار وما شابه. لمثل هذه التطبيقات، يمكنك استخدام عدد عشري وحدة بدلا من ذلك.
• localcontext()
وظيفة إرجاع مدير السياق. لذلك يمكنك استخدام localcontext()
وظيفة في with
العبارة، وقم بتعيين الدقة للسياق الحالي باستخدام كما هو موضح:
from decimal import Decimal, localcontext
with localcontext() as cur_context:
cur_context.prec = 40
a = Decimal(2)
b = Decimal(3)
print(a/b)
وهنا الإخراج:
Output >>>
0.6666666666666666666666666666666666666667
هنا، يتم ضبط الدقة على 40 منزلة عشرية، ولكن ضمن هذا فقط with
حاجز. عندما يخرج التنفيذ من السياق الحالي، تتم استعادة الدقة إلى الدقة الافتراضية (28 منزلة عشرية).
في هذا البرنامج التعليمي، تعلمنا كيف يمكن استخدام مديري السياق للتعامل مع اتصالات قاعدة البيانات، وإدارة العمليات الفرعية والسياقات في حساب الفاصلة العائمة عالي الدقة.
في البرنامج التعليمي التالي، سنرى كيف يمكننا إنشاء مديري سياقات مخصصين في بايثون. حتى ذلك الحين، برمجة سعيدة!
بالا بريا سي مطور وكاتب تقني من الهند. تحب العمل في تقاطع الرياضيات والبرمجة وعلوم البيانات وإنشاء المحتوى. تشمل مجالات اهتمامها وخبرتها DevOps وعلوم البيانات ومعالجة اللغة الطبيعية. تستمتع بالقراءة والكتابة والترميز والقهوة! تعمل حاليًا على التعلم ومشاركة معرفتها مع مجتمع المطورين من خلال تأليف برامج تعليمية وأدلة إرشادية ومقالات رأي والمزيد.
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- PlatoData.Network Vertical Generative Ai. تمكين نفسك. الوصول هنا.
- أفلاطونايستريم. ذكاء Web3. تضخيم المعرفة. الوصول هنا.
- أفلاطون كربون، كلينتك ، الطاقة، بيئة، شمسي، إدارة المخلفات. الوصول هنا.
- أفلاطون هيلث. التكنولوجيا الحيوية وذكاء التجارب السريرية. الوصول هنا.
- المصدر https://www.kdnuggets.com/3-interesting-uses-of-python-context-managers?utm_source=rss&utm_medium=rss&utm_campaign=3-interesting-uses-of-pythons-context-managers
- :لديها
- :يكون
- :ليس
- $ UP
- 1
- 11
- 12
- 28
- 31
- 32
- 40
- 7
- 8
- 9
- a
- من نحن
- تستحوذ على
- منذ
- السماح
- أيضا
- an
- و
- آخر
- التطبيقات
- هي
- المناطق
- AS
- أسوشيتد
- At
- التأليف
- أوتوماتيك
- تلقائيا
- b
- سحق
- BE
- حظر
- ممل
- على حد سواء
- ابني
- مدمج
- لكن
- by
- تسمى
- CAN
- أسر
- فرصة
- منظف
- صندوق توظيف برأس مال محدود
- الكود
- البرمجة
- مشترك
- مجتمع
- مختصرا
- التواصل
- متصل
- صلة
- التواصل
- بناء
- تحتوي على
- محتوى
- انشاء محتوى
- محتويات
- سياق الكلام
- السياقات
- خلق
- يخلق
- خلق
- أوراق اعتماد
- حالياًّ
- حاليا
- على
- البيانات
- علم البيانات
- قاعدة البيانات
- قواعد البيانات
- الترتيب
- المطور
- DevOps
- do
- فعل
- إلى أسفل
- فعال
- بكفاءة
- يضمن
- يدخل
- إنشاء
- مثال
- أمثلة
- استثناء
- الخروج
- مخارج
- خبرة
- خارجي
- قم بتقديم
- ملفات
- مالي
- البيانات المالية
- الاسم الأول
- تطفو
- يطفو على السطح
- تركز
- متابعيك
- في حالة
- تبدأ من
- وظيفة
- وظيفة
- دولار فقط واحصل على خصم XNUMX% على جميع
- Go
- خير
- دليل
- معالجة
- سعيد
- لها
- هنا
- مرتفع
- مضيف
- كيفية
- HTML
- HTTPS
- i
- if
- صورة
- استيراد
- in
- تتضمن
- الهند
- info
- داخلي
- في الداخل
- تثبيت
- بدلًا من ذلك
- مصلحة
- وكتابة مواضيع مثيرة للاهتمام
- تقاطع طرق
- إلى
- أدخلت
- IT
- انها
- يناير
- JPG
- KD nuggets
- المعرفة
- لغة
- الى وقت لاحق
- التسريبات
- تعلم
- تعلم
- يتيح
- مثل
- الإعجابات
- قائمة
- منطق
- طويل
- بحث
- يبدو مثل
- الرئيسية
- إدارة
- تمكن
- المدراء
- إدارة
- الرياضيات
- طرق
- وحدة
- الأكثر من ذلك
- MySQL
- طبيعي
- اللغة الطبيعية
- معالجة اللغات الطبيعية
- حاجة
- جديد
- التالي
- لا
- الآن
- الأجسام
- of
- on
- مرة
- فقط
- جاكيت
- مراجعة
- or
- أخرى
- خارج
- الناتج
- على مدى
- المعلمات
- كلمة المرور
- قطعة
- أنبوب
- وجهات
- أفلاطون
- الذكاء افلاطون البيانات
- أفلاطون داتا
- البوينت
- دقة
- الطباعة
- والمضي قدما
- عملية المعالجة
- معالجة
- برمجة وتطوير
- بصورة صحيحة
- تزود
- ويوفر
- بايثون
- الاستفسارات
- بسرعة
- تماما
- عشوائية
- RE
- نادي القراءة
- مطلوب
- مورد
- الموارد
- مرمم
- نتيجة
- النتائج
- عائدات
- يجري
- s
- قول
- علوم
- سيناريو
- القسم
- انظر تعريف
- حدد
- مدخل بطاقة الذاكرة : نعم
- طقم
- مشاركة
- هي
- إظهار
- أظهرت
- مماثل
- الاشارات
- So
- شيء
- محدد
- ملخص الحساب
- البيانات
- هذه
- مناسب
- بناء الجملة
- نقر
- تقني
- أن
- •
- then
- هناك.
- هم
- عبر
- إلى
- جدا
- الإجمالي
- البرنامج التعليمي
- الدروس
- نوع
- حتى
- تستخدم
- مستعمل
- مفيد
- مستخدم
- يستخدم
- استخدام
- تحقق من
- الإصدار
- W
- تريد
- we
- متى
- التي
- في حين
- لماذا
- سوف
- مع
- في غضون
- للعمل
- سير العمل
- عامل
- اكتب
- كاتب
- جاري الكتابة
- كتب
- لصحتك!
- زفيرنت