الانتقال إلى المحتوى الرئيسي

دوال الاستعلام الأساسية

chdb.query

تنفيذ استعلام SQL باستخدام محرك chDB. هذه هي دالة الاستعلام الرئيسية التي تنفّذ عبارات SQL باستخدام محرك ClickHouse المضمّن. وهي تدعم تنسيقات إخراج متعددة، ويمكنها العمل مع قواعد البيانات داخل الذاكرة أو المستندة إلى الملفات. البنية
المعلمات القيم المعادة يعيد نتيجة الاستعلام بالتنسيق المحدد: الاستثناءات أمثلة

chdb.sql

تنفيذ استعلام SQL باستخدام محرك chDB. هذه هي دالة الاستعلام الرئيسية التي تنفّذ عبارات SQL باستخدام محرك ClickHouse المضمّن. وهي تدعم تنسيقات إخراج متعددة، ويمكنها العمل مع قواعد بيانات داخل الذاكرة أو مستندة إلى الملفات. البنية
المعلمات القيم المعادة تعيد نتيجة الاستعلام بالتنسيق المحدد: الاستثناءات أمثلة

chdb.to_arrowTable

حوّل نتيجة استعلام إلى PyArrow Table. يحوّل نتيجة استعلام chdb إلى PyArrow Table لمعالجة البيانات العمودية بكفاءة. ويُرجِع جدولًا فارغًا إذا كانت النتيجة فارغة. البنية
المعلمات القيمة المعادة الأخطاء المرفوعة مثال

chdb.to_df

حوِّل نتيجة الاستعلام إلى إطار بيانات Pandas. يحوِّل نتيجة استعلام في chDB إلى إطار بيانات Pandas عبر تحويلها أولًا إلى جدول PyArrow ثم إلى Pandas باستخدام تعدد الخيوط لتحسين الأداء. البنية
المعلمات القيمة المعادة الاستثناءات مثال

إدارة الاتصالات والجلسات

تتوفر دوال الجلسة التالية:

chdb.connect

أنشئ اتصالًا بخادم chDB الذي يعمل في الخلفية. تنشئ هذه الدالة اتصالًا بمحرك قاعدة البيانات chDB ‏(ClickHouse). يُسمح باتصال مفتوح واحد فقط لكل عملية. ستُرجع الاستدعاءات المتعددة باستخدام سلسلة الاتصال نفسها كائن الاتصال ذاته.
المعلمات: التنسيقات الأساسية مع معلمات الاستعلام التعامل مع معلمات الاستعلام تُمرَّر معلمات الاستعلام إلى محرك ClickHouse كوسيطات بدء تشغيل. معالجة خاصة للمعلمات: للحصول على القائمة الكاملة للمعلمات، راجع clickhouse local --help --verbose القيم المعادة الاستثناءات
لا يُدعم سوى اتصال واحد لكل عملية. سيؤدي إنشاء اتصال جديد إلى إغلاق أي اتصال موجود.
أمثلة
انظر أيضًا
  • Connection - فئة لاتصال قاعدة البيانات
  • Cursor - مؤشر قاعدة بيانات لعمليات DB-API 2.0

التعامل مع الاستثناءات

فئة chdb.ChdbError

الفئات الأساسية: Exception الفئة الأساسية للاستثناءات المرتبطة بـ chDB. يُرفَع هذا الاستثناء عندما يفشل تنفيذ استعلام في chDB أو عند حدوث خطأ. وهو يرث من فئة Exception القياسية في Python، ويوفّر معلومات عن الخطأ من محرك ClickHouse الداخلي.

الفئة chdb.session.Session

الفئات الأساسية: object ستحتفظ الجلسة بحالة الاستعلام. إذا كانت قيمة path هي None، فسيُنشئ دليلًا مؤقتًا ويستخدمه كمسار لقاعدة البيانات، وسيُزال الدليل المؤقت عند إغلاق الجلسة. يمكنك أيضًا تمرير مسار لإنشاء قاعدة بيانات في ذلك المسار للاحتفاظ ببياناتك. يمكنك أيضًا استخدام سلسلة اتصال لتمرير المسار ومعلمات أخرى.
أمثلة
معالجة وسائط سلسلة الاتصالسلاسل الاتصال التي تحتوي على معلمات استعلام مثل “file:test.db?param1=value1&param2=value2” سيتم تمرير “param1=value1” إلى محرك ClickHouse كوسائط بدء التشغيل.لمزيد من التفاصيل، راجع clickhouse local –help –verboseطريقة معالجة بعض الوسائط الخاصة:
  • تتحول “mode=ro” إلى “–readonly=1” في clickhouse (وضع القراءة فقط)
مهم
  • لا يمكن أن توجد إلا جلسة واحدة في كل مرة. إذا أردت إنشاء جلسة جديدة، فعليك إغلاق الجلسة الحالية.
  • سيؤدي إنشاء جلسة جديدة إلى إغلاق الجلسة الحالية.

cleanup

نظِّف موارد الجلسة مع معالجة الاستثناءات. تحاول هذه الطريقة إغلاق الجلسة مع تجاهل أي استثناءات قد تحدث أثناء عملية التنظيف. وهي مفيدة بشكل خاص في سيناريوهات معالجة الأخطاء أو عندما تحتاج إلى ضمان تنفيذ التنظيف بغضّ النظر عن حالة الجلسة. البنية
لن تتسبب هذه الطريقة مطلقًا في ظهور أي استثناء، مما يجعل استدعاءها آمنًا داخل كتل finally أو في الدوال المدمِّرة.
أمثلة
انظر أيضًا
  • close() - للإغلاق الصريح للجلسة مع تمرير الأخطاء

close

أغلق الجلسة وحرّر الموارد. تُغلق هذه الدالة الاتصال الأساسي وتعيد تعيين حالة الجلسة العامة. بعد استدعاء هذه الدالة، تصبح الجلسة غير صالحة ولا يمكن استخدامها لإجراء مزيد من الاستعلامات. البنية
تُستدعى هذه الطريقة تلقائيًا عند استخدام الجلسة كمدير سياق أو عند حذف كائن الجلسة.
مهمستؤدي أي محاولة لاستخدام الجلسة بعد استدعاء close() إلى حدوث خطأ.
أمثلة

query

نفِّذ استعلام SQL وأعِد النتائج. تُنفِّذ هذه الطريقة استعلام SQL على قاعدة بيانات الجلسة وتُعيد النتائج بالتنسيق المحدد. وتدعم هذه الطريقة تنسيقات إخراج متعددة، كما تحافظ على حالة الجلسة بين الاستعلامات. البنية
المعلمات القيم المعادة يعيد نتائج الاستعلام بالتنسيق المحدد. ويعتمد نوع القيمة المعادة الفعلي على معلمة التنسيق:
  • تنسيقات السلاسل النصية (CSV وJSON وما إلى ذلك) تعيد str
  • التنسيقات الثنائية (Arrow وParquet) تعيد bytes
الاستثناءات
تنسيق “Debug” غير مدعوم، وسيُحوَّل تلقائيًا إلى “CSV” مع عرض تحذير. ولأغراض تصحيح الأخطاء، استخدم معلمات سلسلة الاتصال بدلًا من ذلك.
تحذيرتنفّذ هذه الطريقة الاستعلام بشكل متزامن وتحمّل جميع النتائج إلى الذاكرة. بالنسبة إلى مجموعات النتائج الكبيرة، فكّر في استخدام send_query() للحصول على نتائج متدفقة.
أمثلة
انظر أيضًا
  • send_query() - لتنفيذ الاستعلام المتدفق
  • sql - اسم مستعار لهذه الطريقة

send_query

نفّذ استعلام SQL وأعِد مكرّرًا لنتيجة متدفقة. تُنفّذ هذه الطريقة استعلام SQL على قاعدة بيانات الجلسة وتُعيد كائن نتيجة متدفقة يتيح لك التكرار عبر النتائج دون تحميل كل شيء إلى الذاكرة دفعة واحدة. ويُعد هذا مفيدًا بشكل خاص مع مجموعات النتائج الكبيرة. البنية
المعلمات القيم المُعادة الاستثناءات
تنسيق “Debug” غير مدعوم، وسيُحوَّل تلقائيًا إلى “CSV” مع تحذير. ولأغراض تصحيح الأخطاء، استخدم معلمات سلسلة الاتصال بدلًا من ذلك.
يجب استهلاك كائن StreamingResult المُعاد بسرعة أو تخزينه على نحو مناسب، لأنه يحتفظ باتصال بقاعدة البيانات.
أمثلة
راجع أيضًا
  • query() - لتنفيذ الاستعلامات غير المتدفقة
  • chdb.state.sqlitelike.StreamingResult - مُكرِّر النتائج المتدفقة

sql

نفِّذ استعلام SQL وأعِد النتائج. تُنفِّذ هذه الطريقة استعلام SQL على قاعدة بيانات الجلسة وتُعيد النتائج بالتنسيق المحدد. كما تدعم هذه الطريقة تنسيقات إخراج متعددة، وتحافظ على حالة الجلسة بين الاستعلامات. الصياغة
المعلمات القيم المعادة تُعيد نتائج الاستعلام بالتنسيق المحدد. ويعتمد نوع القيمة المعادة الفعلي على معلمة التنسيق:
  • تُعيد تنسيقات String ‏(مثل CSV وJSON وغيرها) قيمة من النوع str
  • تُعيد التنسيقات الثنائية ‏(Arrow وParquet) قيمة من النوع bytes
الاستثناءات:
تنسيق “Debug” غير مدعوم، وسيُحوَّل تلقائيًا إلى “CSV” مع عرض تحذير. لتصحيح الأخطاء، استخدم معلمات سلسلة الاتصال بدلًا من ذلك.
تحذيرتنفّذ هذه الطريقة الاستعلام بشكل متزامن وتحمّل جميع النتائج إلى الذاكرة. بالنسبة إلى مجموعات النتائج الكبيرة، يُرجى التفكير في استخدام send_query() للحصول على نتائج متدفقة.
أمثلة
انظر أيضًا
  • send_query() - لتنفيذ الاستعلامات المتدفقة
  • sql - اسم مستعار لهذه الطريقة

إدارة الحالة

chdb.state.connect

أنشئ اتصالًا مع الخادم الخلفي لـ chDB. تنشئ هذه الدالة اتصالًا بمحرك قاعدة بيانات chDB ‏(ClickHouse). يُسمح باتصال مفتوح واحد فقط لكل عملية. وستُعيد الاستدعاءات المتعددة باستخدام سلسلة الاتصال نفسها كائن الاتصال ذاته. الصياغة
المعلمات التنسيقات الأساسية تنسيقات سلاسل الاتصال المدعومة: مع معلمات الاستعلام معالجة معلمات الاستعلام تُمرَّر معلمات الاستعلام إلى محرك ClickHouse كوسيطات بدء تشغيل. توجد معالجة خاصة لبعض المعلمات: للحصول على قائمة كاملة بالمعلمات، راجع clickhouse local --help --verbose القيم المعادة الاستثناءات
تحذيرلا يُدعم سوى اتصال واحد لكل عملية. سيؤدي إنشاء اتصال جديد إلى إغلاق أي اتصال موجود.
أمثلة
انظر أيضًا
  • Connection - فئة اتصال بقاعدة البيانات
  • Cursor - مؤشر قاعدة البيانات لعمليات DB-API 2.0

الفئة chdb.state.sqlitelike.Connection

الفئات الأساسية: object الصياغة

close

أغلق الاتصال ونظّف الموارد. تُغلق هذه الطريقة اتصال قاعدة البيانات وتُنظّف أي موارد مرتبطة به، بما في ذلك المؤشرات النشطة. بعد استدعاء هذه الطريقة، يصبح الاتصال غير صالح ولا يمكن استخدامه في أي عمليات لاحقة. الصياغة
تسترجع هذه الطريقة النتيجة نفسها عند استدعائها أكثر من مرة، لذا فإن استدعاءها عدة مرات آمن.
تحذيرسيتم إلغاء أي استعلامات متدفقة جارية عند إغلاق الاتصال. تأكد من معالجة جميع البيانات المهمة قبل إغلاق الاتصال.
أمثلة

cursor

أنشئ كائن Cursor لتنفيذ الاستعلامات. تُنشئ هذه الطريقة مؤشر قاعدة بيانات يوفّر واجهة DB-API 2.0 القياسية لتنفيذ الاستعلامات وجلب النتائج. ويتيح المؤشر تحكمًا دقيقًا في تنفيذ الاستعلام واسترجاع النتائج. الصياغة
يعيد
سيؤدي إنشاء مؤشر جديد إلى استبدال أي مؤشر موجود مرتبط بهذا الاتصال. لا يُدعَم إلا مؤشر واحد لكل اتصال.
أمثلة
انظر أيضًا
  • Cursor - تنفيذ لمؤشّر قاعدة البيانات

query

نفّذ استعلام SQL وأعِد النتائج كاملةً. تُنفِّذ هذه الطريقة استعلام SQL بشكل متزامن وتُعيد مجموعة النتائج كاملةً. وهي تدعم تنسيقات إخراج متعددة وتُطبّق تلقائيًا المعالجة اللاحقة الخاصة بكل تنسيق. الصياغة
المعلمات: القيم المعادة الاستثناءات
تحذيرتُحمِّل هذه الطريقة مجموعة النتائج بالكامل إلى الذاكرة. بالنسبة إلى النتائج الكبيرة، يُنصح باستخدام send_query() للبث.
أمثلة
انظر أيضًا
  • send_query() - لتنفيذ الاستعلامات المتدفقة

send_query

نفّذ استعلام SQL وأعِد مكرّرًا لنتيجة متدفقة. تنفّذ هذه الطريقة استعلام SQL وتُعيد كائن StreamingResult يتيح لك التكرار عبر النتائج دون تحميل كل شيء في الذاكرة دفعة واحدة. وهذا مثالي لمعالجة مجموعات النتائج الكبيرة. البنية
المعلمات القيمة المعادة الاستثناءات
تنسيق “Arrow” فقط هو الذي يدعم الطريقة record_batch() على StreamingResult المُعاد.
أمثلة
انظر أيضًا
  • query() - لتنفيذ الاستعلامات غير المتدفقة
  • StreamingResult - مكرّر نتائج البث

فئة chdb.state.sqlitelike.StreamingResult

الفئات الأساسية: object مكرِّر نتائج متدفقة لمعالجة نتائج الاستعلامات الكبيرة. توفّر هذه الفئة واجهة تكرار لنتائج الاستعلامات المتدفقة دون تحميل مجموعة النتائج بالكامل إلى الذاكرة. وهي تدعم تنسيقات إخراج متنوعة وتوفّر أساليب للجلب اليدوي للنتائج وبثّ RecordBatch من PyArrow.

fetch

اجلب الجزء التالي من نتائج الاستعلام المتدفقة. تسترجع هذه الطريقة الجزء التالي المتاح من البيانات من نتيجة الاستعلام المتدفق. ويعتمد تنسيق البيانات المُعادة على التنسيق المحدد عند بدء الاستعلام المتدفق. الصياغة
القيم المعادة أمثلة

cancel

ألغِ الاستعلام المتدفق وحرِّر الموارد. تلغي هذه الطريقة أي استعلام متدفق جارٍ وتحرِّر الموارد المرتبطة به. ويجب استدعاؤها عندما تريد إيقاف معالجة النتائج قبل انتهاء التدفق. الصياغة
أمثلة

close

أغلق النتيجة المتدفقة ونظّف الموارد. اسم مستعار لـ cancel(). يُغلق مُكرِّر النتيجة المتدفقة ويحرّر أي موارد مرتبطة بها. الصياغة

record_batch

أنشئ PyArrow RecordBatchReader لمعالجة الدُفعات بكفاءة. تُنشئ هذه الطريقة كائن PyArrow RecordBatchReader يتيح التكرار بكفاءة عبر نتائج الاستعلام بتنسيق Arrow. وهذه هي الطريقة الأكثر كفاءة لمعالجة مجموعات النتائج الكبيرة عند استخدام PyArrow. الصياغة
المعلمات القيم المعادة
لا تتوفر هذه الطريقة إلا إذا بدأ الاستعلام المتدفق باستخدام format="Arrow". وسيؤدي استخدامها مع تنسيقات أخرى إلى حدوث خطأ.
أمثلة

بروتوكول المكرِّر

يدعم StreamingResult بروتوكول المكرِّر في بايثون، مما يسمح باستخدامه مباشرةً في حلقات for:

بروتوكول مدير السياق

يدعم StreamingResult بروتوكول مدير السياق للتنظيف التلقائي للموارد:

الصنف chdb.state.sqlitelike.Cursor

الصنف الأساسي: object

close

أغلِق المؤشر ونظِّف الموارد. تُغلق هذه الطريقة المؤشر وتُنظِّف أي موارد مرتبطة به. بعد استدعاء هذه الطريقة، يصبح المؤشر غير صالح ولا يمكن استخدامه في عمليات لاحقة. الصيغة
هذه الطريقة مكررة الأثر — لذا من الآمن استدعاؤها عدة مرات. ويُغلَق المؤشر تلقائيًا أيضًا عند إغلاق الاتصال.
أمثلة

column_names

أعِد قائمة بأسماء الأعمدة من آخر استعلام نُفِّذ. تُرجِع هذه الطريقة أسماء الأعمدة من أحدث استعلام SELECT تم تنفيذه. وتُرجَع الأسماء بالترتيب نفسه الذي تظهر به في مجموعة النتائج. الصيغة
القيمة المُعادة أمثلة
انظر أيضًا
  • column_types() - الحصول على معلومات عن نوع العمود
  • description - وصف العمود في DB-API 2.0

column_types

أعِد قائمةً بأنواع الأعمدة من آخر استعلام تم تنفيذه. تعيد هذه الطريقة أسماء أنواع أعمدة ClickHouse من أحدث استعلام SELECT تم تنفيذه. وتُعاد الأنواع بالترتيب نفسه الذي تظهر به في مجموعة النتائج. الصيغة
القيم المعادة أمثلة
انظر أيضًا
  • column_names() - الحصول على معلومات عن أسماء الأعمدة
  • description - وصف الأعمدة وفقًا لـ DB-API 2.0

commit

ثبّت أي معاملة قيد الانتظار. تُثبّت هذه الطريقة أي معاملة قاعدة بيانات قيد الانتظار. في ClickHouse، تُثبَّت معظم العمليات تلقائيًا، لكن هذه الطريقة مُتاحة من أجل التوافق مع DB-API 2.0.
يُثبّت ClickHouse العمليات تلقائيًا في العادة، لذا لا تكون استدعاءات commit الصريحة ضروريةً غالبًا. وهذه الطريقة مُتاحة من أجل التوافق مع سير العمل القياسي لـ DB-API 2.0.
الصيغة
أمثلة

property description : list

يعيد وصف الأعمدة وفقًا لمواصفة DB-API 2.0. تعيد هذه الخاصية قائمة من tuples، يتكوّن كل منها من 7 عناصر تصف كل عمود في مجموعة نتائج آخر استعلام SELECT تم تنفيذه. يحتوي كل Tuple على: (name, type_code, display_size, internal_size, precision, scale, null_ok) حاليًا، لا يتم توفير سوى name و type_code، بينما تُضبط الحقول الأخرى على None. القيمة المعادة
يتوافق هذا مع مواصفة DB-API 2.0 الخاصة بـ cursor.description. ولا يحتوي إلا العنصران الأولان (name و type_code) على بيانات فعلية في هذا التنفيذ.
أمثلة
انظر أيضًا
  • column_names() - الحصول على أسماء الأعمدة فقط
  • column_types() - الحصول على أنواع الأعمدة فقط

execute

نفّذ استعلام SQL وجهّز النتائج للاسترداد. تنفّذ هذه الطريقة استعلام SQL وتجهّز النتائج لاستردادها باستخدام طرق الجلب. كما تتولى تحليل بيانات النتائج وإجراء التحويل التلقائي لأنواع بيانات ClickHouse. الصيغة
المعلمات: الاستثناءات
تتبع هذه الطريقة مواصفات DB-API 2.0 الخاصة بـ cursor.execute(). بعد التنفيذ، استخدم fetchone() أو fetchmany() أو fetchall() من أجل استرجاع النتائج.
تحوّل هذه الطريقة تلقائيًا أنواع بيانات ClickHouse إلى أنواع Python المناسبة:
  • أنواع Int/UInt → int
  • أنواع Float → float
  • String/FixedString → str
  • DateTime → datetime.datetime
  • Date → datetime.date
  • Bool → bool
أمثلة
انظر أيضًا
  • fetchone() - استرجاع صف واحد
  • fetchmany() - استرجاع عدة صفوف
  • fetchall() - استرجاع جميع الصفوف المتبقية

fetchall

اجلب جميع الصفوف المتبقية من نتيجة الاستعلام. تسترجع هذه الطريقة جميع الصفوف المتبقية من مجموعة نتائج الاستعلام الحالية بدءًا من موضع المؤشر الحالي. وتُرجع tuple من tuple للصفوف مع تطبيق تحويل أنواع Python المناسب. البنية
القيمة المعادة:
تحذيرتُحمّل هذه الطريقة جميع الصفوف المتبقية إلى الذاكرة دفعة واحدة. بالنسبة إلى مجموعات النتائج الكبيرة، فكّر في استخدام fetchmany() لمعالجة النتائج على دفعات.
أمثلة
انظر أيضًا

fetchmany

اجلب عدة صفوف من نتيجة الاستعلام. تسترجع هذه الطريقة ما يصل إلى size صفًا من مجموعة نتائج الاستعلام الحالية. وتُرجع tuple من tuples للصفوف، بحيث يحتوي كل صف على قيم الأعمدة مع تحويل مناسب إلى أنواع Python. الصيغة
المعلمات القيم المعادة
تتبع هذه الطريقة مواصفات DB-API 2.0. وستُرجع عددًا أقل من ‘size’ صفوف إذا استُنفدت مجموعة النتائج.
أمثلة
انظر أيضًا

fetchone

اجلب الصف التالي من نتيجة الاستعلام. تسترجع هذه الطريقة الصف التالي المتاح من مجموعة نتائج الاستعلام الحالية. وتُرجع قيمة من نوع tuple تحتوي على قيم الأعمدة مع تطبيق التحويل المناسب إلى أنواع Python. الصيغة
يعيد:
تتبع هذه method مواصفات DB-API 2.0. وتُحوَّل قيم الأعمدة تلقائيًا إلى أنواع Python المناسبة استنادًا إلى أنواع أعمدة ClickHouse.
أمثلة
انظر أيضًا
  • fetchmany() - استرجاع عدة صفوف
  • fetchall() - استرجاع جميع الصفوف المتبقية

chdb.state.sqlitelike

حوِّل نتيجة الاستعلام إلى PyArrow Table. تُحوِّل هذه الدالة نتائج استعلامات chdb إلى تنسيق PyArrow Table، مما يوفّر وصولًا فعّالًا إلى البيانات المخزّنة عموديًا وإمكانية التشغيل البيني مع مكتبات معالجة البيانات الأخرى. الصيغة
المعلمات: القيمة المعادة الاستثناءات
تتطلب هذه الدالة تثبيت كلٍّ من pyarrow وpandas. ثبّتهما باستخدام: pip install pyarrow pandas
تحذيرتُرجِع النتائج الفارغة جدول PyArrow فارغًا بلا schema.
أمثلة

chdb.state.sqlitelike.to_df

حوِّل نتيجة الاستعلام إلى Pandas DataFrame. تُحوِّل هذه الدالة نتائج استعلامات chdb إلى Pandas DataFrame عبر تحويلها أولًا إلى PyArrow Table ثم إلى DataFrame. ويوفّر ذلك إمكانات مريحة لتحليل البيانات باستخدام واجهة Pandas البرمجية. الصيغة
المعلمات: القيمة المعادة: الاستثناءات
تستخدم هذه الدالة المعالجة متعددة الخيوط لتحويل Arrow إلى Pandas لتحسين الأداء عند التعامل مع مجموعات البيانات الكبيرة.
انظر أيضًا أمثلة

تكامل DataFrame

الصنف chdb.dataframe.Table

الأصناف الأساسية:

واجهة Database API ‏(DBAPI) 2.0

يوفّر chDB واجهة متوافقة مع Python DB-API 2.0 للاتصال بقواعد البيانات، مما يتيح لك استخدام chDB مع الأدوات وأطر العمل التي تعتمد واجهات قواعد بيانات قياسية. تتضمن واجهة chDB DB-API 2.0 ما يلي:
  • الاتصالات: إدارة اتصالات قاعدة البيانات باستخدام سلاسل الاتصال
  • المؤشرات: تنفيذ الاستعلامات واسترجاع النتائج
  • نظام الأنواع: ثوابت أنواع ومحوّلات متوافقة مع DB-API 2.0
  • معالجة الأخطاء: تسلسل هرمي قياسي لاستثناءات قواعد البيانات
  • أمان الخيوط: المستوى 1 من أمان الخيوط (يمكن للخيوط مشاركة الوحدات، لكن ليس الاتصالات)

الدوال الأساسية

تتضمن واجهة Database API ‏(DBAPI) 2.0 الدوال الأساسية التالية:

chdb.dbapi.connect

أنشئ اتصالًا جديدًا بقاعدة البيانات. الصيغة
المعلمات الاستثناءات

chdb.dbapi.get_client_info()

يسترجع معلومات إصدار العميل. يعيد إصدار عميل chDB كسلسلة نصية للتوافق مع MySQLdb. الصيغة
القيم المعادة

مُنشئات الأنواع

chdb.dbapi.Binary(x)

إرجاع x كنوع ثنائي. تُحوِّل هذه الدالة المُدخل إلى النوع bytes لاستخدامه مع الحقول الثنائية في قاعدة البيانات، وذلك وفقًا لمواصفة DB-API 2.0. الصيغة
المعلمات القيمة المُعادة

الصنف Connection

الصنف chdb.dbapi.connections.Connection(path=None)

الفئات الأساسية: object اتصال متوافق مع DB-API 2.0 بقاعدة بيانات chDB. يوفّر هذا الصنف واجهة DB-API قياسية للاتصال بقواعد بيانات chDB والتفاعل معها. ويدعم قواعد البيانات داخل الذاكرة وقواعد البيانات القائمة على الملفات. يدير الاتصال محرك chDB الأساسي ويوفّر أساليب لتنفيذ الاستعلامات وإدارة المعاملات (من دون تأثير في ClickHouse) وإنشاء المؤشرات.
المعلمات المتغيرات أمثلة
لا يدعم ClickHouse المعاملات التقليدية، لذا فإن العمليتين commit() و rollback() لا تُحدثان أي تأثير، لكنهما متاحتان للامتثال لمعيار DB-API.

close

أغلق اتصال قاعدة البيانات. يُغلق اتصال chDB الأساسي ويضع علامة على هذا الاتصال باعتباره مغلقًا. وأي عمليات لاحقة على هذا الاتصال ستؤدي إلى ظهور خطأ. الصيغة
الاستثناءات التي قد تُرفع

commit

اعتمد المعاملة الحالية. الصيغة
هذا الإجراء بلا تأثير في chDB/ClickHouse لأنه لا يدعم المعاملات التقليدية. وهو متاح للامتثال لمعيار DB-API 2.0.

cursor

أنشئ مؤشرًا جديدًا لتنفيذ الاستعلامات. الصيغة
المعلمات العوائد الاستثناءات مثال

escape

أفلِت قيمة بحيث يمكن تضمينها بأمان في استعلامات SQL. الصيغة
المعاملات القيمة المعادة مثال

escape_string

قم بإفلات قيمة نصية لاستعلامات SQL. الصيغة
المعلمات القيمة المعادة

property open

تحقّق مما إذا كان الاتصال مفتوحًا. القيمة المعادة

query

نفّذ استعلام SQL مباشرةً وأعِد النتائج الأولية. تتجاوز هذه الطريقة واجهة المؤشر وتنفّذ الاستعلامات مباشرةً. لاستخدام DB-API القياسي، يُفضَّل استخدام الطريقة cursor(). الصيغة
المعلمات: القيمة المعادة الاستثناءات مثال

property resp

يعرض آخر استجابة للاستعلام. القيمة المُعادة
تُحدَّث هذه الخاصية في كل مرة يُستدعى فيها query() مباشرةً. ولا تعكس الاستعلامات التي تُنفَّذ عبر المؤشرات.

rollback

التراجع عن المعاملة الحالية. البنية
هذه عملية بلا تأثير في chDB/ClickHouse لأنه لا يدعم المعاملات التقليدية. وهي مُتاحة للامتثال لـ DB-API 2.0.

فئة المؤشر

فئة chdb.dbapi.cursors.Cursor

يرث من: object مؤشر DB-API 2.0 لتنفيذ الاستعلامات وجلب النتائج. يوفّر المؤشر أساليب لتنفيذ عبارات SQL، وإدارة نتائج الاستعلام، والتنقّل عبر مجموعات النتائج. كما يدعم ربط المعلمات والعمليات المجمّعة، ويلتزم بمواصفات DB-API 2.0. لا تُنشئ مثيلات مؤشر مباشرةً. استخدم Connection.cursor() بدلًا من ذلك.
أمثلة
راجع DB-API 2.0 Cursor Objects للاطلاع على التفاصيل الكاملة للمواصفات.

callproc

نفّذ إجراءً مخزّنًا (تنفيذ مبدئي). الصيغة
المعلمات القيمة المعادة
لا يدعم chDB/ClickHouse الإجراءات المخزنة بالمفهوم التقليدي. تُوفَّر هذه method للامتثال لمعيار DB-API 2.0، لكنها لا تنفّذ أي عملية فعلية. استخدم execute() لجميع عمليات SQL.
التوافقهذا تنفيذ شكلي. لا يدعم ClickHouse engine الأساسي ميزات الإجراءات المخزنة التقليدية، مثل معاملات OUT/INOUT، ومجموعات النتائج المتعددة، ومتغيرات الخادم.

close

أغلِق المؤشر وحرِّر الموارد المرتبطة به. بعد إغلاقه، يصبح المؤشر غير قابل للاستخدام، وأي عملية عليه سترفع استثناءً. يؤدي إغلاق المؤشر إلى استهلاك جميع البيانات المتبقية وتحرير المؤشر الأساسي. الصيغة

execute

نفّذ استعلام SQL مع ربط اختياري للمعلمات. تُنفِّذ هذه الطريقة تعليمة SQL واحدة مع استبدال اختياري للمعلمات. وتدعم عدة أنماط لعناصر نائبة للمعلمات لمزيد من المرونة. البنية
المعلمات القيمة المُعادة أنماط المعلمات أمثلة
الاستثناءات

executemany(query, args)

نفِّذ استعلامًا عدة مرات باستخدام مجموعات مختلفة من المعلمات. تُنفِّذ هذه الطريقة استعلام SQL نفسه بكفاءة عدة مرات مع قيم مختلفة للمعلمات. وهي مفيدة بشكل خاص في عمليات INSERT المجمّعة. الصيغة
المعلمات القيم المعادة أمثلة
تُحسّن هذه الطريقة الأداء في عمليات INSERT وUPDATE متعددة الصفوف من خلال تحسين آلية تنفيذ الاستعلام.

fetchall()

استرجع جميع الصفوف المتبقية من نتيجة الاستعلام. البنية
يعيد يثير
تحذيرقد تستهلك هذه الطريقة كميات كبيرة من الذاكرة عند التعامل مع مجموعات نتائج كبيرة. فكّر في استخدام fetchmany() مع مجموعات النتائج الكبيرة.
مثال

fetchmany

يجلب عدة صفوف من نتيجة الاستعلام. البنية
المعلمات القيم المعادة الاستثناءات مثال

fetchone

يجلب الصف التالي من نتيجة الاستعلام. الصياغة
القيم المعادة الاستثناءات مثال

max_stmt_length = 1024000

الحد الأقصى لحجم تعليمة statement التي تُنشئها executemany(). القيمة الافتراضية هي 1024000.

mogrify

يعيد سلسلة الاستعلام الدقيقة التي ستُرسَل إلى قاعدة البيانات. تُظهر هذه الطريقة استعلام SQL النهائي بعد استبدال المعلمات، مما يفيد في تصحيح الأخطاء والتسجيل. الصيغة
المعلمات القيم المعادة مثال
تتبع هذه الطريقة الامتداد الخاص بـ DB-API 2.0 كما يستخدمه Psycopg.

nextset

انتقل إلى مجموعة النتائج التالية (غير مدعوم). الصيغة
يعيد
لا يدعم chDB/ClickHouse إرجاع مجموعات نتائج متعددة من استعلام واحد. تُوفَّر هذه الطريقة للامتثال لـ DB-API 2.0، لكنها تعيد None دائمًا.

setinputsizes

يضبط أحجام الإدخال للمعلمات (تنفيذ شكلي لا يؤدي أي إجراء). البنية
المعلمات
لا تقوم هذه الطريقة بأي شيء، لكنها مطلوبة وفقًا لمواصفة DB-API 2.0. يتولى chDB تلقائيًا معالجة تحديد حجم المعلمات داخليًا.

setoutputsizes

ضبط أحجام أعمدة الإخراج (تنفيذ شكلي بلا تأثير فعلي). الصيغة
المعلمات
لا تقوم هذه الطريقة بأي شيء، لكنها مطلوبة وفقًا لمواصفة DB-API 2.0. يتولى chDB تلقائيًا معالجة تحديد حجم المخرجات داخليًا.

فئات الأخطاء

فئات الاستثناءات لعمليات قاعدة البيانات في chdb. توفّر هذه الوحدة تسلسلاً هرمياً كاملاً لفئات الاستثناءات للتعامل مع الأخطاء المرتبطة بقاعدة البيانات في chdb، وذلك وفقاً لمواصفة Python Database API الإصدار 2.0. يأتي التسلسل الهرمي للاستثناءات على النحو التالي:
تمثل كل فئة من فئات الاستثناء فئةً محددة من أخطاء قاعدة البيانات:
تتوافق فئات الاستثناء هذه مع مواصفة Python DB API 2.0، وتوفّر معالجة متسقة للأخطاء عبر مختلف عمليات قاعدة البيانات.
راجع أيضًا أمثلة

الاستثناء chdb.dbapi.err.DataError

يرث من: DatabaseError يُرفَع هذا الاستثناء عند حدوث أخطاء ناتجة عن مشكلات في البيانات التي تجري معالجتها. يُرفَع هذا الاستثناء عندما تفشل عمليات قاعدة البيانات بسبب مشكلات في البيانات قيد المعالجة، مثل:
  • عمليات القسمة على صفر
  • قيم رقمية خارج النطاق
  • قيم تاريخ/وقت غير صالحة
  • أخطاء اقتطاع السلاسل النصية
  • فشل تحويل الأنواع
  • تنسيق بيانات غير صالح لنوع العمود
الاستثناءات المُثارة أمثلة

استثناء chdb.dbapi.err.DatabaseError

الفئات الأساسية: Error استثناء يُرفَع عند حدوث أخطاء مرتبطة بقاعدة البيانات. هذه هي الفئة الأساسية لجميع الأخطاء المتعلقة بقاعدة البيانات. وهي تشمل كل الأخطاء التي تحدث أثناء عمليات قاعدة البيانات وترتبط بقاعدة البيانات نفسها لا بالواجهة. تشمل الحالات الشائعة ما يلي:
  • أخطاء تنفيذ SQL
  • مشكلات الاتصال بقاعدة البيانات
  • مشكلات متعلقة بالمعاملات
  • انتهاكات القيود الخاصة بقاعدة البيانات
تُعد هذه الفئة الأساسية لأنواع أخطاء قاعدة البيانات الأكثر تحديدًا، مثل DataError وOperationalError وغيرها.

استثناء chdb.dbapi.err.Error

الفئات الأساسية: StandardError استثناء يُعد الفئة الأساسية لجميع استثناءات الأخطاء الأخرى (وليس Warning). هذه هي الفئة الأساسية لجميع استثناءات الأخطاء في chdb، باستثناء التحذيرات. وهي تمثل الفئة الأم لجميع حالات أخطاء قاعدة البيانات التي تمنع إكمال العمليات بنجاح.
يتبع هذا التسلسل الهرمي للاستثناءات مواصفة Python DB API 2.0.
انظر أيضًا
  • Warning - للتحذيرات غير الجسيمة التي لا تمنع اكتمال العملية

الاستثناء chdb.dbapi.err.IntegrityError

الفئات الأساسية: DatabaseError يُثار هذا الاستثناء عندما تتأثر السلامة العلائقية لقاعدة البيانات. ويُثار عند انتهاك عمليات قاعدة البيانات لقيود السلامة، بما في ذلك:
  • انتهاك قيد المفتاح الخارجي
  • انتهاك المفتاح الأساسي أو القيد الفريد (مفاتيح مكررة)
  • انتهاك قيد التحقق
  • انتهاك قيد NOT NULL
  • انتهاك السلامة المرجعية
يُثير أمثلة

استثناء chdb.dbapi.err.InterfaceError

الفئات الأساسية: Error يُثار هذا الاستثناء عند حدوث أخطاء تتعلق بواجهة قاعدة البيانات، لا بقاعدة البيانات نفسها. يُثار هذا الاستثناء عند وجود مشكلات في تنفيذ واجهة قاعدة البيانات، مثل:
  • معلمات اتصال غير صالحة
  • إساءة استخدام API (استدعاء الأساليب على اتصالات مغلقة)
  • أخطاء بروتوكول على مستوى الواجهة
  • فشل استيراد الوحدة أو تهيئتها
يُثير
تكون هذه الأخطاء عادةً أخطاء برمجية أو مشكلات في التهيئة، ويمكن حلها من خلال إصلاح كود العميل أو التهيئة.

الاستثناء chdb.dbapi.err.InternalError

الفئات الأساسية: DatabaseError يُرفَع هذا الاستثناء عندما تواجه قاعدة البيانات خطأً داخليًا. يُرفَع هذا الاستثناء عندما يواجه نظام قاعدة البيانات أخطاءً داخلية لا يتسبب بها التطبيق، مثل:
  • حالة مؤشر غير صالحة (لم يعد المؤشر صالحًا)
  • حالات عدم اتساق في حالة المعاملة (المعاملة غير متزامنة)
  • مشكلات تلف في قاعدة البيانات
  • تلف في بنية البيانات الداخلية
  • أخطاء قاعدة بيانات على مستوى النظام
يرفع
تحذيرقد تشير الأخطاء الداخلية إلى مشكلات خطيرة في قاعدة البيانات تتطلب انتباه مسؤول قاعدة البيانات. ولا يمكن عادةً معالجة هذه الأخطاء من خلال منطق إعادة المحاولة على مستوى التطبيق.
تكون هذه الأخطاء عمومًا خارج نطاق تحكم التطبيق، وقد تتطلب إعادة تشغيل قاعدة البيانات أو تنفيذ عمليات إصلاح.

استثناء chdb.dbapi.err.NotSupportedError

الفئات الأساسية: DatabaseError يُرفع هذا الاستثناء عندما لا تكون إحدى الطرق أو Database API مدعومة. يُرفع هذا الاستثناء عندما يحاول التطبيق استخدام ميزات في قاعدة البيانات أو طرق API لا تدعمها تهيئة قاعدة البيانات الحالية أو إصدارها الحالي، مثل:
  • طلب rollback() على الاتصالات التي لا تدعم المعاملات
  • استخدام ميزات SQL متقدمة لا يدعمها إصدار قاعدة البيانات
  • استدعاء طرق غير مُنفّذة في برنامج التشغيل الحالي
  • محاولة استخدام ميزات معطّلة في قاعدة البيانات
الاستثناءات أمثلة
راجع وثائق قاعدة البيانات وإمكانات المشغّل لتجنّب هذه الأخطاء. وفكّر في اعتماد آليات احتياطية بديلة بسلاسة متى أمكن.

استثناء chdb.dbapi.err.OperationalError

الفئات الأساسية: DatabaseError استثناء يُرفَع عند وقوع أخطاء مرتبطة بتشغيل قاعدة البيانات. يُرفَع هذا الاستثناء عند حدوث أخطاء أثناء تشغيل قاعدة البيانات ولا تكون بالضرورة ضمن سيطرة المبرمج، بما في ذلك:
  • انقطاع الاتصال بقاعدة البيانات بشكل غير متوقع
  • تعذّر العثور على خادم قاعدة البيانات أو تعذّر الوصول إليه
  • حالات فشل معالجة المعاملات
  • أخطاء تخصيص الذاكرة أثناء المعالجة
  • نفاد مساحة القرص أو الموارد
  • أخطاء داخلية في خادم قاعدة البيانات
  • إخفاقات المصادقة أو التفويض
يُثير
تكون هذه الأخطاء عادةً مؤقتة، وقد تُحل بإعادة محاولة تنفيذ العملية أو بمعالجة المشكلات على مستوى النظام.
تحذيرقد تشير بعض الأخطاء التشغيلية إلى مشكلات خطيرة في النظام تتطلب تدخّلًا إداريًا.

استثناء chdb.dbapi.err.ProgrammingError

الفئات الأساسية: DatabaseError يُرفَع هذا الاستثناء عند حدوث أخطاء برمجية في عمليات قاعدة البيانات. يُرفَع هذا الاستثناء عندما تكون هناك أخطاء برمجية في استخدام التطبيق لقاعدة البيانات، بما في ذلك:
  • تعذّر العثور على جدول أو عمود
  • وجود الجدول أو الفهرس مسبقًا عند الإنشاء
  • أخطاء في بناء جملة SQL في التعليمات
  • تحديد عدد غير صحيح من المعلمات في التعليمات المُحضّرة
  • عمليات SQL غير صالحة (مثل DROP على كائنات غير موجودة)
  • استخدام غير صحيح لأساليب واجهة برمجة تطبيقات قواعد البيانات
يُثير أمثلة

الاستثناء chdb.dbapi.err.StandardError

الفئات الأساسية: Exception استثناء مرتبط بالعمليات التي تُجرى باستخدام chdb. هذه هي الفئة الأساسية لجميع الاستثناءات المرتبطة بـ chdb. وهي ترث من فئة Exception المضمنة في Python وتمثل الجذر في التسلسل الهرمي لاستثناءات عمليات قاعدة البيانات.
تتبع فئة الاستثناء هذه مواصفة Python DB API 2.0 لمعالجة استثناءات قاعدة البيانات.

الاستثناء chdb.dbapi.err.Warning

الفئات الأساسية: StandardError استثناء يُثار عند حدوث تحذيرات مهمة، مثل اقتطاع البيانات أثناء الإدراج، وما إلى ذلك. يُثار هذا الاستثناء عندما تكتمل العملية على قاعدة البيانات، ولكن مع تحذيرات مهمة ينبغي تنبيه التطبيق إليها. وتشمل السيناريوهات الشائعة ما يلي:
  • اقتطاع البيانات أثناء الإدراج
  • فقدان الدقة في التحويلات الرقمية
  • تحذيرات تحويل ترميز الأحرف
يتوافق هذا مع مواصفة Python DB API 2.0 الخاصة باستثناءات التحذير.

ثوابت الوحدة النمطية

chdb.dbapi.apilevel = '2.0'

أنشئ كائن سلسلة نصية جديدًا من الكائن المُعطى. إذا جرى تحديد encoding أو errors، فيجب أن يوفّر الكائن مخزنًا مؤقتًا للبيانات سيُفك ترميزه باستخدام encoding المحدد ومعالج الأخطاء. وبخلاف ذلك، يُرجِع ناتج object._\_str_\_() (إذا كان معرّفًا) أو repr(object).
  • القيمة الافتراضية لـ encoding هي ‘utf-8’.
  • القيمة الافتراضية لـ errors هي ‘strict’.

chdb.dbapi.threadsafety = 1

حوِّل رقمًا أو سلسلة نصية إلى عدد صحيح، أو أعد 0 إذا لم تُمرَّر أي argument. إذا كان x رقمًا، فأعد x._int_(). بالنسبة إلى الأعداد ذات الفاصلة العائمة، يُقتطع الجزء الكسري باتجاه الصفر. إذا لم يكن x رقمًا أو إذا أُعطيت base، فيجب أن يكون x سلسلة نصية، أو bytes، أو instance من bytearray يمثّل عددًا صحيحًا مكتوبًا بالأساس المحدد. يمكن أن تسبق هذه الصيغة العلامة ‘+’ أو ‘-’، وأن تُحاط بمسافات بيضاء. تكون القيمة الافتراضية لـ base هي 10. الأسس الصالحة هي 0 و2-36. ويعني الأساس 0 أن يُستدل على الأساس من السلسلة نفسها باعتبارها عددًا صحيحًا مكتوبًا.

chdb.dbapi.paramstyle = 'format'

أنشئ كائنًا نصيًا جديدًا من الكائن المعطى. إذا تم تحديد encoding أو errors، فيجب أن يوفّر الكائن مخزنًا مؤقتًا للبيانات يُفك ترميزه باستخدام الترميز المحدد ومعالج الأخطاء المحدد. وإلا، فستُعاد نتيجة object._str_() (إن كانت معرّفة) أو repr(object). القيمة الافتراضية لـ encoding هي ‘utf-8’. القيمة الافتراضية لـ errors هي ‘strict’.

ثوابت الأنواع

chdb.dbapi.STRING = frozenset({247, 253, 254})

frozenset موسع لمقارنة الأنواع في DB-API 2.0. يوسّع هذا الصنف frozenset لدعم دلالات مقارنة الأنواع في DB-API 2.0. ويتيح تحقّقًا مرنًا من الأنواع، بحيث يمكن مقارنة العناصر الفردية بالمجموعة باستخدام معاملي المساواة وعدم المساواة. يُستخدم هذا مع ثوابت الأنواع مثل STRING وBINARY وNUMBER وغيرها لتمكين مقارنات مثل “field_type == STRING”، حيث تكون field_type قيمة نوع واحدة. أمثلة

chdb.dbapi.BINARY = frozenset({249, 250, 251, 252})

frozenset موسع لمقارنة الأنواع وفقًا لـ DB-API 2.0. يوسّع هذا الصنف frozenset لدعم دلالات مقارنة الأنواع في DB-API 2.0. ويتيح التحقق من الأنواع بمرونة، بحيث يمكن مقارنة العناصر الفردية بالمجموعة باستخدام معاملي المساواة وعدم المساواة. يُستخدم هذا مع ثوابت الأنواع مثل STRING وBINARY وNUMBER وما إلى ذلك لتمكين مقارنات مثل “field_type == STRING”، حيث تكون field_type قيمة نوع واحدة. أمثلة

chdb.dbapi.NUMBER = frozenset({0, 1, 3, 4, 5, 8, 9, 13})

frozenset موسع لمقارنة الأنواع في DB-API 2.0. يوسّع هذا الصنف frozenset لدعم دلالات مقارنة الأنواع في DB-API 2.0. ويتيح إجراء تحقق من الأنواع بمرونة، بحيث يمكن مقارنة العناصر الفردية بالمجموعة باستخدام معاملي المساواة وعدم المساواة. يُستخدم هذا مع ثوابت الأنواع مثل STRING وBINARY وNUMBER وغيرها لتمكين مقارنات مثل “field_type == STRING”، حيث تكون field_type قيمة نوع واحدة. أمثلة

chdb.dbapi.DATE = frozenset({10, 14})

frozenset موسع لمقارنة الأنواع في DB-API 2.0. توسّع هذه الفئة frozenset لدعم دلالات مقارنة الأنواع في DB-API 2.0. وتتيح تحقّقًا مرنًا من الأنواع، بحيث يمكن مقارنة العناصر الفردية بالمجموعة باستخدام معاملي المساواة وعدم المساواة. يُستخدم هذا مع ثوابت الأنواع مثل STRING وBINARY وNUMBER وغيرها لتمكين مقارنات مثل “field_type == STRING”، حيث تكون field_type قيمة نوع واحدة. أمثلة

chdb.dbapi.TIME = frozenset({11})

frozenset موسّعة لمقارنة الأنواع في DB-API 2.0. يوسّع هذا الصنف frozenset لدعم دلالات مقارنة الأنواع في DB-API 2.0. ويتيح تحققًا مرنًا من الأنواع، بحيث يمكن مقارنة العناصر المفردة بالمجموعة باستخدام معاملي المساواة وعدم المساواة. يُستخدم هذا مع ثوابت الأنواع مثل STRING وBINARY وNUMBER وغيرها لتمكين مقارنات مثل “field_type == STRING”، حيث تكون field_type قيمة نوع واحدة. أمثلة

chdb.dbapi.TIMESTAMP = frozenset({7, 12})

frozenset موسّعة لمقارنة الأنواع في DB-API 2.0. يوسّع هذا الصنف frozenset لدعم دلالات مقارنة الأنواع في DB-API 2.0. ويتيح تحقّقًا مرنًا من الأنواع، بحيث يمكن مقارنة العناصر الفردية بالمجموعة باستخدام معاملي المساواة وعدم المساواة. يُستخدم هذا مع ثوابت الأنواع مثل STRING وBINARY وNUMBER وغيرها لتمكين مقارنات مثل “field_type == STRING”، حيث تكون field_type قيمة نوع واحدة. أمثلة

chdb.dbapi.DATETIME = frozenset({7, 12})

frozenset موسَّعة لمقارنة الأنواع وفق DB-API 2.0. يوسِّع هذا الصنف frozenset لدعم دلالات مقارنة الأنواع في DB-API 2.0. ويتيح التحقق من الأنواع بمرونة، بحيث يمكن مقارنة العناصر المفردة بالمجموعة باستخدام معاملي المساواة وعدم المساواة. يُستخدم هذا مع ثوابت الأنواع مثل STRING وBINARY وNUMBER وغيرها لتمكين مقارنات مثل “field_type == STRING”، حيث تكون field_type قيمة نوع واحدة. أمثلة

chdb.dbapi.ROWID = frozenset({})

frozenset موسع لمقارنة الأنواع في DB-API 2.0. توسّع هذه الفئة frozenset لدعم دلالات مقارنة الأنواع في DB-API 2.0. وتتيح إجراء تحقق من الأنواع بمرونة، بحيث يمكن مقارنة العناصر المفردة بالمجموعة باستخدام معاملي المساواة وعدم المساواة. يُستخدم هذا مع ثوابت الأنواع مثل STRING وBINARY وNUMBER وغيرها لتمكين مقارنات مثل “field_type == STRING”، حيث تكون field_type قيمة نوع واحدة. أمثلة
أمثلة الاستخدام مثال لاستعلام أساسي:
التعامل مع البيانات:
إدارة الاتصالات:
أفضل الممارسات
  1. إدارة الاتصال: أغلق دائمًا الاتصالات والمؤشرات عند الانتهاء
  2. مديرو السياق: استخدم تعليمات with للتنظيف التلقائي
  3. المعالجة على دفعات: استخدم fetchmany() مع مجموعات النتائج الكبيرة
  4. معالجة الأخطاء: ضمّن عمليات قاعدة البيانات داخل كتل try-except
  5. ربط المعلمات: استخدم الاستعلامات المُعلَّمة بالمعلمات متى أمكن
  6. إدارة الذاكرة: تجنب fetchall() مع مجموعات البيانات الكبيرة جدًا
  • واجهة DB-API 2.0 في chDB متوافقة مع معظم أدوات قواعد بيانات Python
  • توفّر الواجهة أمان خيوط من المستوى 1 (يمكن لخيوط التنفيذ مشاركة الوحدات، ولكن ليس الاتصالات)
  • تدعم سلاسل الاتصال نفس المعلمات التي تدعمها جلسات chDB
  • جميع استثناءات DB-API 2.0 القياسية مدعومة
تحذير
  • أغلق دائمًا المؤشرات والاتصالات لتجنب تسرّب الموارد
  • ينبغي معالجة مجموعات النتائج الكبيرة على دفعات
  • تتبع صياغة ربط المعلمات نمط format: %s

الدوال المعرّفة من قبل المستخدم (UDF)

وحدة الدوال المعرّفة من قبل المستخدم في chDB. توفّر هذه الوحدة إمكانات إنشاء الدوال المعرّفة من قبل المستخدم (UDFs) وإدارتها في chDB. كما تتيح لك توسيع إمكانات chDB من خلال كتابة دوال Python مخصّصة يمكن استدعاؤها من استعلامات SQL.

chdb.udf.chdb_udf

مُزيِّن لدوال Python من نوع UDF (دالة معرّفة من المستخدم) في chDB. البنية
المعلمات ملاحظات
  1. يجب أن تكون الدالة عديمة الحالة. يتم دعم UDFs فقط، وليس UDAFs.
  2. نوع الإرجاع الافتراضي هو String. ويجب أن يكون نوع الإرجاع أحد أنواع بيانات ClickHouse.
  3. يجب أن تستقبل الدالة وسيطات من النوع String. جميع الوسيطات سلاسل نصية.
  4. سيتم استدعاء الدالة لكل سطر من الإدخال.
  5. يجب أن تكون الدالة مكتوبة باستخدام pure Python. استورد جميع الوحدات المستخدمة داخل الدالة.
  6. مُفسِّر Python المستخدم هو نفسه المستخدم لتشغيل البرنامج النصي.
مثال

chdb.udf.generate_udf

إنشاء ملفات تهيئة UDF وملفات البرامج النصية التنفيذية. تنشئ هذه الدالة الملفات اللازمة لدالة معرّفة من قبل المستخدم (UDF) في chDB:
  1. برنامجًا نصيًا تنفيذيًا بلغة Python لمعالجة بيانات الإدخال
  2. ملف تهيئة XML لتسجيل UDF في ClickHouse
الصيغة
المعاملات
تُستدعى هذه الدالة عادةً عبر المُزيِّن @chdb_udf، ولا ينبغي للمستخدمين استدعاؤها مباشرةً.

الأدوات المساعدة

الدوال والأدوات المساعدة لـ chDB. تتضمن هذه الوحدة مجموعة متنوعة من الدوال المساعدة للعمل مع chDB، بما في ذلك استنتاج أنواع البيانات، وأدوات تحويل البيانات، وأدوات تصحيح الأخطاء.

chdb.utils.convert_to_columnar

يحوّل قائمة من القواميس إلى تنسيق عمودي. تأخذ هذه الدالة قائمة من القواميس وتحوّلها إلى قاموس حيث يقابل كل مفتاح عمودًا، وتمثل كل قيمة قائمةً من قيم الأعمدة. تُمثَّل القيم المفقودة في القواميس على أنها None. البنية
المعلمات القيم المعادة مثال

chdb.utils.flatten_dict

يُسطِّح قاموسًا متداخلًا. تأخذ هذه الدالة قاموسًا متداخلًا وتُسطِّحه عبر دمج المفاتيح المتداخلة باستخدام فاصل. وتُحوَّل قوائم القواميس إلى سلاسل JSON. البنية
المعلمات القيمة المعادة مثال

chdb.utils.infer_data_type

يستنتج أنسب نوع بيانات لقائمة من القيم. تفحص هذه الدالة قائمة من القيم وتحدد نوع البيانات الأنسب لتمثيل جميع القيم فيها. وهي تأخذ في الاعتبار أنواع الأعداد الصحيحة، والأعداد الصحيحة غير الموقعة، والأنواع العشرية، وأنواع الفاصلة العائمة، وتستخدم “string” افتراضيًا إذا تعذر تمثيل القيم بأي نوع رقمي أو إذا كانت جميع القيم None. البنية
المعلمات القيم المعادة
  • إذا كانت جميع القيم في القائمة هي None، فستُرجِع الدالة “string”.
  • إذا كانت أي قيمة في القائمة سلسلة نصية، فستُرجِع الدالة “string” فورًا.
  • تفترض الدالة أن القيم العددية يمكن تمثيلها كأعداد صحيحة، أو أعداد عشرية، أو أعداد فاصلة عائمة استنادًا إلى نطاقها ودقتها.

chdb.utils.infer_data_types

يستنتج أنواع البيانات لكل عمود في بنية بيانات عمودية. تحلّل هذه الدالة القيم في كل عمود وتستنتج أكثر أنواع البيانات ملاءمةً له، استنادًا إلى عيّنة من البيانات. الصيغة
المعاملات القيم المعادة

الفئات الأساسية المجرّدة

فئة chdb.rwabc.PyReader(data: Any)`

الفئات الأساسية: ABC

abstractmethod read

اقرأ عددًا محددًا من الصفوف من الأعمدة المحددة، وأعِد قائمة من الكائنات، بحيث يمثّل كل كائن تسلسلاً من القيم لعمود واحد.
المعلمات القيمة المعادة

الفئة chdb.rwabc.PyWriter

الفئات الأساسية: ABC

abstractmethod finalize

جمِّع البيانات النهائية من الكتل وأعِدها. يجب أن تُنفِّذها الأصناف الفرعية.
القيمة المُعادة

abstractmethod write

يحفظ أعمدة البيانات في كتل. يجب أن تنفّذه الفئات الفرعية.
المعلمات

التعامل مع الاستثناءات

الفئة chdb.ChdbError

الفئات الأساسية: Exception فئة الاستثناء الأساسية للأخطاء المرتبطة بـ chDB. يتم رفع هذا الاستثناء عندما يفشل تنفيذ query في chDB أو عند حدوث error. وهو يرث من فئة Exception القياسية في Python ويقدّم معلومات عن الخطأ من ClickHouse engine الأساسي. تتضمن رسالة الاستثناء عادةً معلومات تفصيلية عن error من ClickHouse، بما في ذلك أخطاء الصياغة، وعدم تطابق الأنواع، والجداول أو الأعمدة المفقودة، وغيرها من مشكلات تنفيذ query. المتغيرات أمثلة
يُثار هذا الاستثناء تلقائيًا بواسطة chdb.query() والدوال ذات الصلة عندما يُبلّغ محرك ClickHouse الأساسي عن خطأ. ينبغي التقاط هذا الاستثناء عند التعامل مع الاستعلامات المعرّضة للفشل لتوفير معالجة مناسبة للأخطاء في تطبيقك.

معلومات الإصدار

chdb.chdb_version = ('3', '6', '0')

تسلسل مضمّن غير قابل للتغيير. إذا لم يتم تمرير أي وسيطة، فسيُعيد المُنشئ tuple فارغًا. وإذا تم تحديد iterable، فستتم تهيئة tuple من عناصره. إذا كانت الوسيطة من النوع tuple، فستكون القيمة المُعادة هي الكائن نفسه.

chdb.engine_version = '25.5.2.1'

أنشئ كائنًا جديدًا من نوع كائن نصي من الكائن المعطى. إذا تم تحديد encoding أو errors، فيجب أن يوفّر الكائن مخزن مؤقت للبيانات سيُفك ترميزه باستخدام الترميز المحدد ومعالج الأخطاء المحدد. وإلا، فستُعاد نتيجة object._str_() (إن كانت معرّفة) أو repr(object).
  • القيمة الافتراضية لـ encoding هي ‘utf-8’.
  • القيمة الافتراضية لـ errors هي ‘strict’.

chdb.__version__ = '3.6.0'

أنشئ كائنًا نصيًا جديدًا من الكائن المعطى. إذا جرى تحديد encoding أو errors، فيجب أن يوفّر الكائن مخزنًا مؤقتًا للبيانات سيُفك ترميزه باستخدام الترميز المحدد ومعالج الأخطاء المحدد. وإلا، فستُعاد نتيجة object._str_() (إذا كانت معرّفة) أو repr(object).
  • القيمة الافتراضية لـ encoding هي ‘utf-8’.
  • القيمة الافتراضية لـ errors هي ‘strict’.
آخر تعديل في ٢٥ يونيو ٢٠٢٦