دليل:باي ويكي بوت/ماي إس كيو إل
يتضمن باي ويكي بوت دعمًا بسيطًا لاستعلامات إس كيو إل على قواعد البيانات الشبيهة بماي إس كيو إل ونسختها.
الإعداد
باي ويكي بوت
لجعل باي ويكي بوت يعمل مع قاعدة بيانات شبيهة بإس كيو إل أو شبيهتها، تأكد أن مكتبة pymysql
مثبتة لديك.
من المحتمل أنك ثبتها بالفعل عند تثبيت باي ويكي بوت. إن كان غير ذلك قم بتشغيل:
$ pip install pymysql
ثانيًا ينبغي عليك تحديث قسم DATABASE SETTINGS
في ملف user-config.py
:
المتغير | قيمة | ||
---|---|---|---|
locally | remotely | Toolforge | |
db_hostname_format |
localhost |
IP address or host | {0}.analytics.db.svc.wikimedia.cloud [1]
|
db_port |
identical to the server port in my.cnf file (default: 3306 )
| ||
db_name_format
|
identical to database name (default: {0} )[1]
|
{0}_p [1]
| |
db_connect_file |
path to the my.cnf file (default: /etc/mysql/my.cnf or ~/.my.cnf ) |
~/replica.my.cnf
| |
db_username |
the credentials to connect to the database, if no db_connect_file provided |
Do not use | |
db_password
|
قاعدة البيانات
قاعدة البيانات أيضًا لا بد أن تكون جاهزة وتحتوي على ضبط وهيكل مقابلين.
على تولفورج ينبغي أن يكون كل شيء يعمل بالشهادات المحددة في replica.my.cnf
الخاص بالأداة، انظر wikitech:Help:Toolforge/Database.
من المهملات
إن كنت تريد تشغيل نموذج محلي (مثل نسخة محملة من مهملات ويكيميديا)، اتبع الخطوات التالية:
لمهملات ويكيميديا أولاً قم بتحميل مهملات إس كيو إل المختارة من: https://dumps.wikimedia.org/backup-index.html.
ثانيًا قم بتثبيت وإعداد mariadb
أو أي قاعدة بيانات شبيهة بماي إس كيو إل تفضلها على آلتك المحلية. اتبع دليل توزيع نظام التشغيل الخاص بك (مثل https://wiki.archlinux.org/index.php/MySQL).
بمجرد الجاهزية، قم ببدء واجهة طرفية/سطور الأوامر لماي إس كيو إل:
$ mysql -u yourusename -p
وقم بإنشاء قاعدة بيانات جديدة باستخدام اسم قاعدة البيانات المختار مسبقًا:
> create database yourdbname;
في حالة مهملات ويكيميديا أخيرًا لديك كل شيء جاهز للخطوة الأخيرة: استيراد جدول مهملات إس كيو إل المحمل إلى قاعدة بياناتك المحلية المعدة:
> quit
$ mysql -u yourusername yourdbname < /path/to/sql/dump/file/xywiki-20180601-sometable.sql
أو يمكنك تعريف قاعدة البيانات الخاصة بك التي تحتوي نطاق الصفحات وعناوين الصفحات وبعض الصفوف الإضافية من اختيارك:
> create table yourtable (page datatype, namespace datatype, ...)
> set yourtable.page = somepage
> set yourtable.namespace = somens
> quit
الاستخدام
الطرفية أو سطور الأوامر
إن كان النص البرمجي المرغوب يدعم pagegenerators.py ، يمكنك تشغيل نص البرمجي باستخدام مولد -mysqlquery:'query'
. سيدفعك للاستعلام إن لم يكن أي استعلام محدد. ينبغي أن يرجع الاستعلام بعمودين، نطاق الصفحة وأزواج عنوان الصفحة من جدول ما.
The query should return two columns, page namespace and page title pairs from some table, e.g.:
$ python pwb.py some_script -mysqlquery:'select page_namespace, page_title from page where ...;'
داخل نصك البرمجي
إن كان نصك البرمجي لا يدعم أي مولد صفحات، يمكنك استيراد MySQLPageGenerator
من pagegenerators.py
:
from pywikibot import pagegenerators
Bot.__init__(generator=pagegenerators.MySQLPageGenerator('select page_namespace, page_title from page where ...', site=self.site))
لكن يمكنك الحصول أيضًا على معلومات أخرى من قاعدة البيانات باستخدام مكتبة pywikibot.data.mysql
:
from pywikibot.data import mysql
some_value = mysql.mysql_query('select page_id from page where ...')
انظر أيضا
- لو كنت بحاجة لمساعدة في إعداد بوت Pywikibot الخاص بك، يرجى زيارة قناة #pywikibot على آي آر سي تواصل أو القائمة البريدية pywikibot@.