Losstopschade

Der digitale Internet-Weblog von Daniel Diekmeier. Archiv. Jetzt abonnieren →

JSON direkt aus Postgres auslesen

Neulich musste ich einige Daten aus einer Postgres-Datenbank sammeln, um mit ihnen zu arbeiten. Ich brauchte eine Liste von den IDs von allen Elementen in einer Tabelle, und ihren zugehörigen Namen. Mit diesen Daten wollte ich dann von Puppeteer ein PDF für jede ID erstellen lassen, und die Dateien mit dem Namen versehen.

Als Ausgangspunkt hätte ich also gerne ein JSON gehabt, damit ich es direkt in mein Node.js Script werfen kann, aber ich hatte keine Lust, mir für das einmalige Auslesen der IDs und Namen extra einen Datenbankzugriff mit dem pg Package oder so zu bauen. Hm! Was tun?

Glücklicherweise konnte ich dann herausfinden, dass Postgres eine eingebaute Funktion hat, die genau das macht: json_object_agg!

Angenommen, wir haben diese Tabelle:

id name username
1 Daniel danjel
2 Clara wundertaeter

Dann können wir die folgende Abfrage machen (ich mache meine Abfragen meistens in Postico), und Postgres aggregiert das direkt in ein JSON Object!

SELECT json_object_agg(
  "user".id,
  "user".username
) FROM "user";

Das Ergebnis sieht dann so aus:

{
  "1": "danjel",
  "2": "wundertaeter"
}

Mit psql geht das sogar direkt im Terminal:

psql --tuples-only -d lesetagebuch_dev \
  -c "SELECT
  json_object_agg(\"user\".id, \"user\".username)
  FROM \"user\";" | jq

Durch das --tuples-only werden Header und Footer von psql übersprungen, so dass das Ergebnis direkt in jq gepiped oder mit > data.json in eine Datei gespeichert werden kann.

Die Suche nach dieser Funktion hat vermutlich etwas länger gedauert, als eine CSV aus Postico zu exportieren, aber falls ich so etwas ähnliches irgendwann noch mal machen muss, geht es dafür viel schneller, und macht mehr Spaß. (Und damit ich es nicht vergesse, schreibe ich es auf!)

Analogfotos, April und Mai 2021

Wie unglaublich ist es eigentlich, dass ich im Jahr 2021 noch zu dem Rossmann direkt vor meinem Haus gehen kann, und dort nicht nur drei Rollen Analogfilm kaufen, sondern auch nachträglich die darauf entstandenen Fotos entwickeln lassen kann? (Etwas Schade ist es aber, dass man die Fotos zwar auch direkt digitalisieren lassen kann, die Scans aber absolut winzig sind.)

Hier sind sie jedenfalls, Analogfotos von April und Mai, unbearbeitet und Hashtag ungefiltert, straight outta Rossmann Foto Compact Disc.

The Humble Zero Width Space

Mein liebstes Satzzeichen ist vermutlich das breitenlose Leerzeichen. Ich mag Dinge, die gleichzeitig sinnvoll, absurd, witzig und etwas obskur sind, und da gehört dieses Leerzeichen definitiv dazu. (Das klingt, als wäre ich eine Figur aus einem Buch von John Green, but stay with me.)

Vielleicht seid ihr überrascht, dass es überhaupt mehr als ein Leerzeichen gibt. Um ehrlich zu sein: Bei meiner „Recherche“ für diesen Artikel war ich selbst überrascht, dass Wikipedia achtzehn verschiedene Leerzeichen in Computersystemen auflistet. Oh je. So weit wollte ich gar nicht gehen!

Das breitenlose Leerzeichen benutze ich eigentlich nur, wenn ich in einem Tweet gerne einen Genitiv benutzen möchte, zum Beispiel „Ich mag @danjel​s leckere Pizza.“ Im Englischen wäre das unproblematisch, aber im Deutschen möchte ich ja nicht „@danjel’s“ schreiben (oder gar „@danjel s“), sondern halt „@danjels“. Damit das „s“ aber nicht zum Nutzernamen gezählt wird, muss man es mit einem, ihr ahnt es, breitenlosen Leerzeichen abtrennen: „@danjel​s“. (Ihr seht es nicht, aber hier ist ein Leerzeichen zwischen l und s!) Das ist der beste Twitterhack, den ich kenne, und bestimmt habe ich ihn von Max Friedrich.

Das breitenlose Leerzeichen eignet sich hervorragend, um Kollegen, Computersysteme und natürlich sich selbst zu verwirren. Zum Beispiel: Schreibt mal einen Artikel über breitenlose Leerzeichen, in dem breitenlose Leerzeichen vorkommen, und überprüft vor dem Veröffentlichen, ob ihr auch keins vergessen habt. Viel Spaß!

Mir geht es aber auch noch um etwas anderes: Manchmal sitze ich da und habe irgendeine diffuse Lust, irgendwas zu programmieren, aber weiß nicht, was. Ich könnte etwas an meinen bestehenden Projekten machen, aber die sind irgendwie so ernst. Manchmal würde ich lieber eine Kleinigkeit machen, die von allem anderen unabhängig ist, aber dafür müsste man erstmal eine Idee haben, und … so sitze ich manchmal stundenlang da und mache nichts.

Aber neulich, als ich mal wieder „Breitenloses Leerzeichen“ in Wikipedia (meiner liebsten Quelle für obskure Satzzeichen) gesucht habe, um es in einem Tweet benutzen zu können, dachte ich: Warum baue ich nicht endlich eine Seite, die genau das macht? Und das habe ich jetzt, und hier ist sie:

Besucht sie und holt euch eure eigenen Leerzeichen: Humble Zero Width Space ↗.

Die Seite besteht nur aus einer einzigen HTML-Datei, in die ich ein bisschen CSS und JavaScript reingeschrieben habe. Von der Idee bis zum Deploy (und damit meine ich, dass ich die Datei per FTP auf meinen Uberspace geschoben habe) dauerte es etwa fünfzehn Minuten. Ich kann nur empfehlen, sowas ab und zu mal zu machen, um sich zu erinnern, wie es sich anfühlt!

Ältere Artikel →