MsSqlQuery

Kurzbeschreibung

MsSqlQuery ist ein General-Brick. Er kann eine als Freitext-Parameter eingegebene SQL-Abfrage an einen SQL Server durchführen und schickt die dabei zurückgelieferten Zeilen als Flow-Packet weiter.

../_images/mssqlquery.svg

Input

MsSqlQuery besitzt einen Input-Port.

substitutions = <string -> variant> 
   : doc "map of variables to replace in the query. 
          The key is the name of the variable, 
          the value is the value of the variable";

Als Input empfängt MsSqlQuery ein Objekt oder eine Map mit Werten die in der SQL-Abfrage als Parameter genutzt werden können.

Output

MsSqlQuery besitzt zwei Output-Ports, "QueryResult" und "Error".

result = variant* : doc "list of rows returned by the query";

error = none;

Als QueryResult verschickt MsSqlQuery eine Liste von Zeilen, die aus der SQL-Abfrage entstanden ist. Sollte auf eine Abfrage kein Ergebnis erwartet werden, wird eine leere list zurückgegeben. Dies ist beispielsweise bei einer INSERT Abfrage def Fall.

Der Error output wird verwendet, sobald ein Fehler auftritt, der durch fehlerhafte Nutzung des Bricks oder einen fehlenden Variabel-Input zustande kommt. Dies ist beispielsweise der Fall, wenn ein SQL-Syntaxfehler in dem Query-Parameter auftritt. Der Wert von Error ist immer none, da nur weitergeleitet wird, dass ein Fehler aufgetreten ist.

Parametrisierung

MsSqlQuery hat folgende Parameter:

  • Host

  • User

  • Password

  • Database

  • Query

Host

Host ist die URL-Adresse des SQL Servers, and den Abfragen geschickt werden sollen.

  • Standardwert : “”

  • string

  • Pflichtfeld

User

User ist der Name des Nutzers, mit dem der Login erfolgen soll.

  • Standardwert : “”

  • string

Password

Password ist das zum Nutzer dazugehörige Passwort.

  • Standardwert : “”

  • secret

Database

Database ist der Name der abzufragenden Datenbank.

  • Standardwert : “”

  • string

Query

Query ist der Quelltext der SQL-Abfrage. Die Abfrage kann durch Variabel-Platzhalter parametrisiert werden. Die Platzhalter werden in der Syntax %(name)s, wo name durch den Variabelnamen zu ersetzen ist, angegeben. Dann erwartet der Brick ein Objekt bzw. eine Map, in der für jede Variabel ein Feld existiert, welches den Namen der Variabel trägt.

Beispiel

die Abfrage

SELECT * FROM TestTable WHERE id = %(id)s AND name = %(name)s;"

mit dem Input { "id": 1, "name": "TEST" } generiert die finale Abfrage:

SELECT * FROM TestTable WHERE id = 1 AND name = "TEST";

Der Input wird dabei bereinigt, sodass möglicher SQL-Injection vorgebeugt wird.

  • Standardwert : “”

  • string

  • Pflichtfeld

Funktion

MsSqlQuery bekommt als Flow-Pakete eine Sammlung von Variabeln. Diese werden dann in die SQL-Abfrage eingebettet, indem dort vermerkte Variabeln durch die Input-Werte ersetzt werden. Die nun vervollständigte SQL-Abfrage wird dann an den angegebenen Server gesendet. Daraufhin wird die Antwort als Flow-Paket weiter verschickt. Sollte ein Fehler auftreten, wird dieser über den Error Port bekannt gegeben.

Python-Module

MsSqlQuery benutzt folgende Python-Module:

  • pymssql