Von Matthias Jung auf Mittwoch, 07. Oktober 2020
Kategorie: Data Management

Plug & Play: MySQL Shell Plugins mit Python

Die MySQL Shell ist ein nützliches Werkzeug. Sie stellt einen adäquaten Ersatz für den bekannten "mysql"-Client dar, bietet darüber hinaus aber unzählige weitere Funktionen und Features. So kann der Funktionsumfang der MySQL Shell beispielsweise relativ einfach über sogenannte Plugins erweitert werden. Als Programmiersprache kommen hierbei JavaScript oder Python in Frage.

Mit Struktur und Ordnung ...

Der Code, der als Plugin zur Verfügung gestellt wird, befindet sich normalerweise im Home-Verzeichnis eines OS-Users unter dem folgenden Pfad:

Natürlich kann auch ein abweichender, zentraler (für mehrere OS-User gültiger) Bereich definiert werden. Der Ort muss dem Anwender über eine Shell-Umgebungsvariable bekannt gemacht werden.

... zum gewünschten Ergebnis

Im Folgenden wollen wir die Entwicklung eines Plugins beispielhaft zeigen. Es soll ein Report entwickelt werden, der uns die genutzten Engine (z.B. InnoDB, CSV, MyISAM, ....) je Schema (aka Database) anzeigen soll. Das entsprechende SQL für die Information sieht wie folgt aus:

Diesen SQL-Code bauen wir nun in ein Python-Skript unterhalb des Plugin-Directory ein. Der Name des Plugins wird über einen Unterordner repräsentiert. Der Code befindet sich je nach Skript-Sprache in der Datei: init.[py|js].

Der Code ist transparent lesbar. Die Query wird als Variable gespeichert. Der Anwender kann wahlweise eine Option "-l" übergeben, um die Ausgabe auf eine zu definierende Anzahl an Zeilen einzuschränken. Die Ergebniszeilen werden in einem Array (report) gespeichert und ausgegeben. Am Ende wird das Plugin bei der MySQL Shell registriert. Die Plugins werden mit dem Start (Aufruf) des Kommandos "mysqlsh" geladen. Änderungen an den Plugins während die Shell aktiv ist, werden erst nach dem Neustart der MySQL Shell berücksichtigt.

Fazit

Die MySQL Shell ist ein vielseitiges Werkzeug und durch den Einsatz bzw. die Entwicklung von Plugins ergeben sich viele Möglichkeiten, die weit über das Erstellen einfacher Reports hinausgehen. Einen guten Überblick darüber, was alles mit Plugins möglich ist, geben die Plugins von Frederic Descampes (www.lefred.be), welche auf github.com (https://github.com/lefred/mysqlshell-plugins/tree/master/collations) zu finden sind.  

Kommentare hinterlassen