J'essaie de créer un système en Python dans lequel on peut sélectionner un nombre de lignes à partir d'un ensemble de tables, qui doivent être formatées dans un utilisateur. manière définie. Disons que la table a
a un ensemble de colonnes, dont certaines incluent une valeur date
ou timestamp
. Le format défini par l'utilisateur pour chaque colonne doit être stocké dans une autre table et interrogé et appliqué sur la requête principale au moment de l'exécution. Permettez-moi de vous donner un exemple: il existe différentes façons de mettre en forme une colonne de date, par ex. en utilisantMise en forme de colonne dynamique en SQL - et un backend pour stocker le formatage
SELECT to_char(column, 'YYYY-MM-DD') FROM table;
dans PostgreSQL. Par exemple, j'aimerais que le deuxième paramètre de l'intégré to_char()
soit interrogé dynamiquement à partir d'une autre table à l'exécution, puis appliqué s'il a une valeur. Lire la définition d'une table en tant que telle n'est pas vraiment un problème, plutôt que de créer un schéma de base de données qui recevrait des données d'une interface utilisateur à partir de laquelle un utilisateur peut sélectionner les instructions de formatage à appliquer aux différentes colonnes. L'utilisateur devrait être en mesure de choisir l'ensemble des colonnes de l'utilisateur à inclure dans la requête de l'utilisateur, ainsi que la mise en forme définie par l'utilisateur pour chaque colonne.
Cela faisait quelques jours que je pensais à le faire d'une manière élégante et efficace, mais en vain. Avoir l'utilisateur mis dans la définition désirée de l'utilisateur dans un champ de texte et l'inclure dans une requête serait à peu près générer une invitation pour les attaques par injection SQL (bien que je puisse utiliser les fonctions escape()
), et stocker toutes les combinaisons possibles ne me semble pas faisable non plus.
Salut patcoll, merci pour votre réponse. Cela semble vraiment prometteur. Je vais essayer. Ce qui reste est le problème de stocker un nombre différent de colonnes avec des formats différents pour chaque utilisateur. – fucx