Jump to content

Handbuch:Pywikibot/MySQL

From mediawiki.org
This page is a translated version of the page Manual:Pywikibot/MySQL and the translation is 100% complete.

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
  1. 1.0 1.1 1.2 {0} steht hier für den Wert von dbName in der aktuellen pywikibot.Family.

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.