Handbuch:Pywikibot/MySQL
| Pywikibot |
|---|
|
Pywikibot beinhaltet grundlegende Unterstützung für SQL-Abfragen auf MySQL-ähnlichen Datenbanken oder Replikas.
Einrichten
Pywikibot
Damit Pywikibot mit einer SQL-basierten Datenbank oder deren Replika funktioniert, stelle sicher, dass die Bibliothek pymysql installiert ist.
Wahrscheinlich hast du diese bereits bei der Installation von Pywikibot installiert. Andernfalls führe folgenden Befehl aus:
$ pip install pymysql
Als Nächstes solltest du den Abschnitt DATABASE SETTINGS in deiner Datei user-config.py aktualisieren:
| Parameter | Wert | ||
|---|---|---|---|
| lokal | Remote | Toolforge | |
db_hostname_format |
localhost |
IP-Adresse oder Host | {0}.analytics.db.svc.wikimedia.cloud[1]
|
db_port
|
identisch mit dem Serverport in der Datei my.cnf (Standard: 3306)
| ||
db_name_format
|
identisch zum Datenbanknamen (Standard: {0})[1]
|
{0}_p[1]
| |
db_connect_file
|
Pfad zur my.cnf-Datei (Standard: /etc/mysql/my.cnf oder ~/.my.cnf)
|
~/replica.my.cnf
| |
db_username
|
die Zugangsdaten für die Datenbank, falls kein db_connect_file angegeben wurde
|
Nicht verwenden | |
db_password
| |||
Datenbank
Die Datenbank muss ebenfalls bereit sein und die entsprechende Konfiguration und Struktur enthalten.
Auf Toolforge sollte alles mit den in der replica.my.cnf des Tools angegebenen Zugangsdaten funktionieren, siehe wikitech:Help:Toolforge/Database.
Aus Dump
Wenn du deine lokale Instanz ausführen möchtest (z. B. eine Kopie, die aus einem Wikimedia-Dump geladen wurde), befolge die folgenden Schritte:
Für Wikimedia-Dumps lade zuerst deinen gewünschten SQL-Dump herunter von: https://dumps.wikimedia.org/backup-index.html.
Installiere und konfiguriere anschließend mariadb oder eine andere bevorzugte MySQL-ähnliche Datenbank auf deinem lokalen Rechner. Befolge dabei die Anweisungen in der Dokumentation deiner Betriebssystemdistribution (z. B. https://wiki.archlinux.org/index.php/MySQL).
Sobald alles bereit ist, starte die MySQL-Terminal-/Befehlszeilen-Schnittstelle:
$ mysql -u yourusename -p
Und erstelle eine neue Datenbank unter Verwendung des zuvor gewählten Datenbanknamens:
> create database yourdbname;
Im Falle eines Wikimedia-Dumps ist nun alles für den letzten Schritt vorbereitet: das Importieren des heruntergeladenen SQL-Tabellen-Dumps in deine vorbereitete lokale Datenbank:
> quit
$ mysql -u yourusername yourdbname < /path/to/sql/dump/file/xywiki-20180601-sometable.sql
Oder du kannst deine eigene Datenbank deklarieren, die den Seitennamensraum, den Seitentitel und einige zusätzliche Zeilen deiner Wahl enthält:
> create table yourtable (page datatype, namespace datatype, ...)
> set yourtable.page = somepage
> set yourtable.namespace = somens
> quit
Verwendung
Terminal/Kommandozeile
Wenn das gewünschte Skript pagegenerators.py unterstützt, kannst du es mit dem -mysqlquery:'Abfrage'-Generator ausführen. Falls keine Abfrage angegeben wird, wirst du dazu aufgefordert.
Die Abfrage sollte zwei Spalten, Paare aus Seitennamensraum und Seitentitel, aus einer Tabelle zurückgeben, z. B.:
$ python pwb.py some_script -mysqlquery:'select page_namespace, page_title from page where ...;'
Innerhalb deines Skripts
Falls dein Skript noch keine Seitengeneratoren unterstützt, kannst du MySQLPageGenerator aus pagegenerators.py importieren:
from pywikibot import pagegenerators
Bot.__init__(generator=pagegenerators.MySQLPageGenerator('select page_namespace, page_title from page where ...', site=self.site))
Du kannst aber auch andere Informationen aus der Datenbank mithilfe der pywikibot.data.mysql-Bibliothek abrufen:
from pywikibot.data import mysql
some_value = mysql.mysql_query('select page_id from page where ...')
Siehe auch
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.