دوال الاستعلام الأساسية
chdb.query
القيم المعادة
يعيد نتيجة الاستعلام بالتنسيق المحدد:
الاستثناءات
أمثلة
chdb.sql
القيم المعادة
تعيد نتيجة الاستعلام بالتنسيق المحدد:
الاستثناءات
أمثلة
chdb.to_arrowTable
القيمة المعادة
الأخطاء المرفوعة
مثال
chdb.to_df
القيمة المعادة
الاستثناءات
مثال
إدارة الاتصالات والجلسات
chdb.connect
التنسيقات الأساسية
مع معلمات الاستعلام
التعامل مع معلمات الاستعلام
تُمرَّر معلمات الاستعلام إلى محرك 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¶m2=value2”
سيتم تمرير “param1=value1” إلى محرك ClickHouse كوسائط بدء التشغيل.لمزيد من التفاصيل، راجع
clickhouse local –help –verboseطريقة معالجة بعض الوسائط الخاصة:- تتحول “mode=ro” إلى “–readonly=1” في clickhouse (وضع القراءة فقط)
cleanup
لن تتسبب هذه الطريقة مطلقًا في ظهور أي استثناء، مما يجعل استدعاءها آمنًا داخل
كتل finally أو في الدوال المدمِّرة.
close()- للإغلاق الصريح للجلسة مع تمرير الأخطاء
close
تُستدعى هذه الطريقة تلقائيًا عند استخدام الجلسة كمدير سياق
أو عند حذف كائن الجلسة.
query
القيم المعادة
يعيد نتائج الاستعلام بالتنسيق المحدد.
ويعتمد نوع القيمة المعادة الفعلي على معلمة التنسيق:
- تنسيقات السلاسل النصية (CSV وJSON وما إلى ذلك) تعيد
str - التنسيقات الثنائية (Arrow وParquet) تعيد
bytes
تنسيق “Debug” غير مدعوم، وسيُحوَّل تلقائيًا
إلى “CSV” مع عرض تحذير.
ولأغراض تصحيح الأخطاء، استخدم معلمات سلسلة الاتصال بدلًا من ذلك.
send_query()- لتنفيذ الاستعلام المتدفقsql- اسم مستعار لهذه الطريقة
send_query
القيم المُعادة
الاستثناءات
تنسيق “Debug” غير مدعوم، وسيُحوَّل تلقائيًا
إلى “CSV” مع تحذير. ولأغراض تصحيح الأخطاء، استخدم معلمات سلسلة الاتصال بدلًا من ذلك.
query()- لتنفيذ الاستعلامات غير المتدفقةchdb.state.sqlitelike.StreamingResult- مُكرِّر النتائج المتدفقة
sql
القيم المعادة
تُعيد نتائج الاستعلام بالتنسيق المحدد.
ويعتمد نوع القيمة المعادة الفعلي على معلمة التنسيق:
- تُعيد تنسيقات String (مثل CSV وJSON وغيرها) قيمة من النوع
str - تُعيد التنسيقات الثنائية (Arrow وParquet) قيمة من النوع
bytes
تنسيق “Debug” غير مدعوم، وسيُحوَّل تلقائيًا إلى “CSV” مع عرض
تحذير. لتصحيح الأخطاء، استخدم معلمات سلسلة الاتصال
بدلًا من ذلك.
send_query()- لتنفيذ الاستعلامات المتدفقةsql- اسم مستعار لهذه الطريقة
إدارة الحالة
chdb.state.connect
التنسيقات الأساسية
تنسيقات سلاسل الاتصال المدعومة:
مع معلمات الاستعلام
معالجة معلمات الاستعلام
تُمرَّر معلمات الاستعلام إلى محرك ClickHouse كوسيطات بدء تشغيل.
توجد معالجة خاصة لبعض المعلمات:
للحصول على قائمة كاملة بالمعلمات، راجع
clickhouse local --help --verbose
القيم المعادة
الاستثناءات
أمثلة
Connection- فئة اتصال بقاعدة البياناتCursor- مؤشر قاعدة البيانات لعمليات DB-API 2.0
الفئة chdb.state.sqlitelike.Connection
object
الصياغة
close
تسترجع هذه الطريقة النتيجة نفسها عند استدعائها أكثر من مرة، لذا فإن استدعاءها عدة مرات آمن.
cursor
سيؤدي إنشاء مؤشر جديد إلى استبدال أي مؤشر موجود مرتبط
بهذا الاتصال. لا يُدعَم إلا مؤشر واحد لكل اتصال.
Cursor- تنفيذ لمؤشّر قاعدة البيانات
query
القيم المعادة
الاستثناءات
أمثلة
send_query()- لتنفيذ الاستعلامات المتدفقة
send_query
القيمة المعادة
الاستثناءات
تنسيق “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". وسيؤدي استخدامها مع تنسيقات أخرى إلى حدوث خطأ.بروتوكول المكرِّر
بروتوكول مدير السياق
الصنف chdb.state.sqlitelike.Cursor
object
close
هذه الطريقة مكررة الأثر — لذا من الآمن استدعاؤها عدة مرات.
ويُغلَق المؤشر تلقائيًا أيضًا عند إغلاق الاتصال.
column_names
أمثلة
column_types()- الحصول على معلومات عن نوع العمودdescription- وصف العمود في DB-API 2.0
column_types
أمثلة
column_names()- الحصول على معلومات عن أسماء الأعمدةdescription- وصف الأعمدة وفقًا لـ DB-API 2.0
commit
يُثبّت ClickHouse العمليات تلقائيًا في العادة، لذا لا تكون استدعاءات
commit الصريحة
ضروريةً غالبًا. وهذه الطريقة مُتاحة من أجل التوافق
مع سير العمل القياسي لـ DB-API 2.0.property description : list
name و type_code، بينما تُضبط الحقول الأخرى على None.
القيمة المعادة
يتوافق هذا مع مواصفة DB-API 2.0 الخاصة بـ cursor.description.
ولا يحتوي إلا العنصران الأولان (
name و type_code) على بيانات
فعلية في هذا التنفيذ.column_names()- الحصول على أسماء الأعمدة فقطcolumn_types()- الحصول على أنواع الأعمدة فقط
execute
الاستثناءات
تتبع هذه الطريقة مواصفات 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 المناسب.
البنية
أمثلة
fetchone()- جلب صف واحدfetchmany()- جلب عدة صفوف على دفعات
fetchmany
size صفًا من مجموعة نتائج
الاستعلام الحالية. وتُرجع tuple من tuples للصفوف، بحيث يحتوي كل صف على
قيم الأعمدة مع تحويل مناسب إلى أنواع Python.
الصيغة
القيم المعادة
تتبع هذه الطريقة مواصفات DB-API 2.0. وستُرجع عددًا أقل
من ‘size’ صفوف إذا استُنفدت مجموعة النتائج.
fetchone()- جلب صف واحدfetchall()- جلب جميع الصفوف المتبقية
fetchone
تتبع هذه method مواصفات DB-API 2.0. وتُحوَّل قيم الأعمدة
تلقائيًا إلى أنواع Python المناسبة استنادًا إلى
أنواع أعمدة ClickHouse.
fetchmany()- استرجاع عدة صفوفfetchall()- استرجاع جميع الصفوف المتبقية
chdb.state.sqlitelike
القيمة المعادة
الاستثناءات
تتطلب هذه الدالة تثبيت كلٍّ من pyarrow وpandas.
ثبّتهما باستخدام:
pip install pyarrow pandaschdb.state.sqlitelike.to_df
القيمة المعادة:
الاستثناءات
تستخدم هذه الدالة المعالجة متعددة الخيوط لتحويل Arrow إلى Pandas
لتحسين الأداء عند التعامل مع مجموعات البيانات الكبيرة.
to_arrowTable()- للتحويل إلى تنسيق PyArrow Table
تكامل DataFrame
الصنف chdb.dataframe.Table
واجهة Database API (DBAPI) 2.0
- الاتصالات: إدارة اتصالات قاعدة البيانات باستخدام سلاسل الاتصال
- المؤشرات: تنفيذ الاستعلامات واسترجاع النتائج
- نظام الأنواع: ثوابت أنواع ومحوّلات متوافقة مع DB-API 2.0
- معالجة الأخطاء: تسلسل هرمي قياسي لاستثناءات قواعد البيانات
- أمان الخيوط: المستوى 1 من أمان الخيوط (يمكن للخيوط مشاركة الوحدات، لكن ليس الاتصالات)
الدوال الأساسية
chdb.dbapi.connect
الاستثناءات
chdb.dbapi.get_client_info()
مُنشئات الأنواع
chdb.dbapi.Binary(x)
القيمة المُعادة
الصنف Connection
الصنف chdb.dbapi.connections.Connection(path=None)
object
اتصال متوافق مع DB-API 2.0 بقاعدة بيانات chDB.
يوفّر هذا الصنف واجهة DB-API قياسية للاتصال بقواعد بيانات chDB والتفاعل معها.
ويدعم قواعد البيانات داخل الذاكرة وقواعد البيانات القائمة على الملفات.
يدير الاتصال محرك chDB الأساسي ويوفّر أساليب
لتنفيذ الاستعلامات وإدارة المعاملات (من دون تأثير في ClickHouse) وإنشاء المؤشرات.
المتغيرات
أمثلة
لا يدعم ClickHouse المعاملات التقليدية، لذا فإن العمليتين commit() و rollback()
لا تُحدثان أي تأثير، لكنهما متاحتان للامتثال لمعيار DB-API.
close
commit
هذا الإجراء بلا تأثير في chDB/ClickHouse لأنه لا يدعم
المعاملات التقليدية. وهو متاح للامتثال لمعيار DB-API 2.0.
cursor
العوائد
الاستثناءات
مثال
escape
القيمة المعادة
مثال
escape_string
القيمة المعادة
property open
query
القيمة المعادة
الاستثناءات
مثال
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.
close
execute
القيمة المُعادة
أنماط المعلمات
أمثلة
executemany(query, args)
القيم المعادة
أمثلة
تُحسّن هذه الطريقة الأداء في عمليات INSERT وUPDATE متعددة الصفوف
من خلال تحسين آلية تنفيذ الاستعلام.
fetchall()
يثير
مثال
fetchmany
القيم المعادة
الاستثناءات
مثال
fetchone
الاستثناءات
مثال
max_stmt_length = 1024000
statement التي تُنشئها executemany().
القيمة الافتراضية هي 1024000.
mogrify
القيم المعادة
مثال
تتبع هذه الطريقة الامتداد الخاص بـ 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 تلقائيًا معالجة تحديد حجم المخرجات داخليًا.
فئات الأخطاء
تتوافق فئات الاستثناء هذه مع مواصفة Python DB API 2.0،
وتوفّر معالجة متسقة للأخطاء عبر مختلف عمليات قاعدة البيانات.
- مواصفة Python Database API الإصدار 2.0
chdb.dbapi.connections- إدارة اتصالات قاعدة البياناتchdb.dbapi.cursors- عمليات مؤشرات قاعدة البيانات
الاستثناء 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'
object._\_str_\_() (إذا كان معرّفًا)
أو repr(object).
- القيمة الافتراضية لـ encoding هي ‘utf-8’.
- القيمة الافتراضية لـ errors هي ‘strict’.
chdb.dbapi.threadsafety = 1
chdb.dbapi.paramstyle = 'format'
ثوابت الأنواع
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})
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})
chdb.dbapi.TIMESTAMP = frozenset({7, 12})
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 قيمة نوع واحدة.
أمثلة
- إدارة الاتصال: أغلق دائمًا الاتصالات والمؤشرات عند الانتهاء
- مديرو السياق: استخدم تعليمات
withللتنظيف التلقائي - المعالجة على دفعات: استخدم
fetchmany()مع مجموعات النتائج الكبيرة - معالجة الأخطاء: ضمّن عمليات قاعدة البيانات داخل كتل try-except
- ربط المعلمات: استخدم الاستعلامات المُعلَّمة بالمعلمات متى أمكن
- إدارة الذاكرة: تجنب
fetchall()مع مجموعات البيانات الكبيرة جدًا
- واجهة DB-API 2.0 في chDB متوافقة مع معظم أدوات قواعد بيانات Python
- توفّر الواجهة أمان خيوط من المستوى 1 (يمكن لخيوط التنفيذ مشاركة الوحدات، ولكن ليس الاتصالات)
- تدعم سلاسل الاتصال نفس المعلمات التي تدعمها جلسات chDB
- جميع استثناءات DB-API 2.0 القياسية مدعومة
الدوال المعرّفة من قبل المستخدم (UDF)
chdb.udf.chdb_udf
ملاحظات
- يجب أن تكون الدالة عديمة الحالة. يتم دعم UDFs فقط، وليس UDAFs.
- نوع الإرجاع الافتراضي هو String. ويجب أن يكون نوع الإرجاع أحد أنواع بيانات ClickHouse.
- يجب أن تستقبل الدالة وسيطات من النوع String. جميع الوسيطات سلاسل نصية.
- سيتم استدعاء الدالة لكل سطر من الإدخال.
- يجب أن تكون الدالة مكتوبة باستخدام pure Python. استورد جميع الوحدات المستخدمة داخل الدالة.
- مُفسِّر Python المستخدم هو نفسه المستخدم لتشغيل البرنامج النصي.
chdb.udf.generate_udf
- برنامجًا نصيًا تنفيذيًا بلغة Python لمعالجة بيانات الإدخال
- ملف تهيئة XML لتسجيل UDF في ClickHouse
تُستدعى هذه الدالة عادةً عبر المُزيِّن @chdb_udf، ولا ينبغي
للمستخدمين استدعاؤها مباشرةً.
الأدوات المساعدة
chdb.utils.convert_to_columnar
القيم المعادة
مثال
chdb.utils.flatten_dict
القيمة المعادة
مثال
chdb.utils.infer_data_type
القيم المعادة
- إذا كانت جميع القيم في القائمة هي 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')
chdb.engine_version = '25.5.2.1'
encoding أو
errors، فيجب أن يوفّر الكائن مخزن مؤقت للبيانات
سيُفك ترميزه باستخدام الترميز المحدد ومعالج الأخطاء المحدد.
وإلا، فستُعاد نتيجة object._str_() (إن كانت معرّفة)
أو repr(object).
- القيمة الافتراضية لـ
encodingهي ‘utf-8’. - القيمة الافتراضية لـ
errorsهي ‘strict’.
chdb.__version__ = '3.6.0'
- القيمة الافتراضية لـ encoding هي ‘utf-8’.
- القيمة الافتراضية لـ errors هي ‘strict’.