Module plume.pg.queries#
Requêtes prêtes à être envoyées au serveur PostgreSQL.
Ce module suppose l’usage de la bibliothèque Psycopg pour la communication avec le serveur PostgreSQL.
Il génère des requêtes à exécuter avec la méthode
psycopg2.cursor.execute()
. Ces requêtes - objets
PgQueryWithArgs
- sont auto-suffisantes, dans le sens
où elles incluent tous les paramètres nécessaires.
La syntaxe pour l’usage de ces requêtes est toujours :
>>> cur.execute(*query)
References#
- class plume.pg.queries.PgQueryWithArgs(query, args=None, **kwargs)#
Bases :
tuple
Requête PostgreSQL prête à l’emploi.
Prend la forme d’un tuple à un ou deux éléments. Le premier élément est la requête SQL, soit un objet de classe
psycopg2.sql.Composed
oupsycopg2.sql.SQL
. Le second élément correspond aux paramètres de la requête, et peut prendre la forme d’un tuple ou d’un dictionnaire selon les cas. Il n’est présent que si la requête admet des paramètres.D’une manière générale, il n’est pas utile de contrôler la présence du second élément. Une requête
query
peut toujours être passée en argument depsycopg2.cursor.execute()
de la manière suivante :>>> cur.execute(*query)
- Parameters:
- querypsycopg2.sql.SQL or psycopg2.sql.Composed
La requête.
- argstuple or dict, optional
Les paramètres de la requête.
- expecting{“some rows”, “one row”, “one value”, “nothing”}, optional
Décrit le résultat attendu, le cas échéant.
- allow_nonebool, default True
True
s’il est admis que la requête ne renvoie aucun enregistrement. SiFalse
, une erreur devra être émise en l’absence de résultat.- missing_mssgstr, optional
Le message d’erreur à présenter lorsque la requête ne renvoie pas de résultat. Ce paramètre est ignoré lorsque allow_none vaut
True
.
- Attributes:
- querypsycopg2.sql.SQL or psycopg2.sql.Composed
La requête à proprement parler.
- argstuple or dict or None
Les paramètres de la requête. Il s’agira d’un tuple vide si la requête ne prend pas de paramètre.
- expecting{“some rows”, “one row”, “one value”, “nothing”}
Décrit le résultat attendu, le cas échéant.
- allow_nonebool
True
s’il est admis que la requête ne renvoie aucun enregistrement. SiFalse
, une erreur devra être émise en l’absence de résultat.- missing_mssgstr or None
Le message d’erreur à présenter lorsque la requête ne renvoie pas de résultat. Vaut toujours
None
lorsque allow_none vautTrue
.
Methods
count
(value, /)Return number of occurrences of value.
index
(value[, start, stop])Return first index of value.
- plume.pg.queries.query_delete_any_table(schema_name, table_name, pk_name, data, columns=None)#
Requête qui supprime un enregistrement d’une table quelconque.
À utiliser comme suit :
>>> query = query_delete_any_table( ... 'nom du schéma', 'nom de la table', 'nom du champ de clé primaire', ... ['valeur champ 1', 'valeur de la clé primaire', 'valeur champ 3'], ... ['nom champ 1', 'nom du champ de clé primaire', 'nom champ 3'] ... ) >>> cur.execute(*query)
La fonction renvoie une erreur si data et columns ne contiennent pas de valeur pour le champ de clé primaire. Il ne pose aucun problème de fournir des valeurs pour d’autres champs, même si la fonction n’en fera rien.
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la table.
- pk_namestr
Nom du champ de clé primaire. La fonction ne prend pas en charge les tables avec des clés primaires multi-champs. Il est admissible d’utiliser un champ non nul prenant des valeurs uniques qui ne serait pas formellement la clé primaire de la relation.
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
. Ce paramètre est obligatoire si data est une liste de valeur.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_delete_meta_categorie(data, columns=None)#
Requête qui supprime une catégorie de la table meta_categorie de PlumePg.
À utiliser comme suit :
>>> query = query_delete_meta_categorie(data) >>> cur.execute(*query)
La fonction renvoie une erreur si data et columns ne contiennent pas de valeur pour le champ de clé primaire, path. Il ne pose aucun problème de fournir des valeurs pour d’autres champs, même si la fonction n’en fera rien.
- Parameters:
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_delete_meta_tab(data, columns=None)#
Requête qui supprime un onglet de la table meta_tab de PlumePg.
À utiliser comme suit :
>>> query = query_delete_meta_tab(data) >>> cur.execute(*query)
La fonction renvoie une erreur si data et columns ne contiennent pas de valeur pour le champ de clé primaire, tab_id. Il ne pose aucun problème de fournir des valeurs pour d’autres champs, même si la fonction n’en fera rien.
- Parameters:
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_delete_meta_template(data, columns=None)#
Requête qui supprime un modèle de fiches de métadonnées de la table meta_template de PlumePg.
À utiliser comme suit :
>>> query = query_delete_meta_template(data) >>> cur.execute(*query)
La fonction renvoie une erreur si data et columns ne contiennent pas de valeur pour le champ de clé primaire, tpl_id. Il ne pose aucun problème de fournir des valeurs pour d’autres champs, même si la fonction n’en fera rien.
- Parameters:
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_delete_meta_template_categories(data, columns=None)#
Requête qui supprime une association modèle-catégorie de la table meta_template_categories de PlumePg.
À utiliser comme suit :
>>> query = query_delete_meta_template_categories(data) >>> cur.execute(*query)
La fonction renvoie une erreur si data et columns ne contiennent pas de valeur pour le champ de clé primaire, tplcat_id. Il ne pose aucun problème de fournir des valeurs pour d’autres champs, même si la fonction n’en fera rien.
- Parameters:
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_evaluate_local_templates(templates_collection, schema_name, table_name)#
Requête qui évalue côté serveur les conditions d’application des modèles locaux.
À utiliser comme suit :
>>> query = query_evaluate_local_templates() >>> cur.execute(*query) >>> templates = cur.fetchall()
- Parameters:
- templates_collectionplume.pg.template.LocalTemplatesCollection
Le répertoire des modèles stockés localement, qui aura été instancié parce que PlumePg n’est pas activée sur la base de la table dont on affiche les métadonnées.
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL, incluant son dictionnaire de paramètres.
Notes
La forme du résultat des requêtes créées avec cette fonction est identique à celle de
query_list_templates()
, ce qui permet ensuite d’appliquer dans les deux cas la fonctionplume.pg.template.search_template()
pour obtenir le nom du modèle à appliquer.
- plume.pg.queries.query_exists_extension(extension)#
Requête qui vérifie qu’une extension est installée sur la base PostgreSQL cible.
À utiliser comme suit :
>>> query = query_exists_extension('nom de l'extension') >>> cur.execute(*query) >>> extension_exists = cur.fetchone()[0]
Le résultat est :
True
si l’extension est installée ;False
si elle est disponible dans le répertoire des extensions du serveur mais non installée ;None
si elle n’est pas disponible sur le serveur.
- Parameters:
- extensionstr
Nom de l’extension.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_for_theme_computing(schema_name, table_name, level_one=True, level_two=True, **kwargs)#
Pseudo-requête pour le calcul du ou des thèmes Ecosphères associés au schéma.
Il s’agit d’une pseudo-requête, dans la mesure où aucune information n’est effectivement récupérée côté serveur, puisque c’est du nom du schéma que sont in fine déduits les thèmes. Mais elle permet de présenter les paramètres sont une forme adaptée au process de calcul.
À utiliser comme suit :
>>> query = query_for_theme_computing(schema_name='nom du schéma', ... table_name='nom de la relation', **compute_params) >>> cur.execute(*query) >>> result = cur.fetchall()
compute_params
est le dictionnaire fourni par la clé “compute parameters” du dictionnaire interne associé à la clé courante du dictionnaire de widgets. Si spécifié par le modèle, il contiendra la valeur des paramètres level_one et/ou level_two.- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- level_onebool, default True
Si
True
, le ou les thèmes de premier niveau associés au nom du schéma sont ajoutés (les plus génériques).- level_twobool, default True
Si
True
, le ou les thèmes de second niveau, associés au nom du schéma sont ajoutés (les plus spécifiques).- **kwargsdict, optional
Paramètres supplémentaires ignorés.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL, incluant son tuple de paramètres.
Notes
Cette fonction est référencée par le module
plume.pg.computer
.
- plume.pg.queries.query_get_categories(tpl_label)#
Requête d’import des catégories à afficher dans un modèle donné.
À utiliser comme suit :
>>> query = query_get_categories('nom du modèle') >>> cur.execute(*query) >>> categories = cur.fetchall()
categories
est une liste de tuples contenant chacun un dictionnaire. À chaque tuple correspond une catégorie de métadonnées associée au modèle. Les clés des dictionnaires correspondent aux noms des champs de la vuez_plume.meta_template_categories_full
et les valeurs sont les valeurs contenues dans ces champs pour l’association modèle/catégorie considérée.Ce résultat peut être fourni en argument au constructeur de la classe
TemplateDict
.- Parameters:
- tpl_labelstr
Nom du modèle choisi.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
Notes
La requête interroge la vue
z_plume.meta_template_categories_full
créée par l’extension PlumePg. Elle ne doit donc être exécutée qu’après contrôle de l’existence de l’extension.
- plume.pg.queries.query_get_columns(schema_name, table_name)#
Requête de récupération des descriptifs des champs d’une table ou vue.
À utiliser comme suit :
>>> query = query_get_columns('nom du schéma', ... 'nom de la relation') >>> cur.execute(*query) >>> columns = cur.fetchall()
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_get_comment_fragments(schema_name, table_name, pattern=None, flags=None, **kwargs)#
Requête de récupération d’une partie du descriptif PostgreSQL d’une table.
À utiliser comme suit :
>>> query = query_get_comment_fragments(schema_name='nom du schéma', ... table_name='nom de la relation', **compute_params) >>> cur.execute(*query) >>> result = cur.fetchall()
compute_params
est le dictionnaire fourni par la clé “compute parameters” du dictionnaire interne associé à la clé courante du dictionnaire de widgets. Si spécifié par le modèle, il contiendra la valeur des paramètres pattern et flags.La liste ainsi obtenue contient des tuples d’un élément, un pour chaque fragment du descriptif capturé par l’expression régulière. Si aucune expression régulière n’a été spécifiée, c’est tout le descriptif hors métadonnées qui est renvoyé. Avec ou sans expression régulière, la requête commence en effet par retirer les balises
<METADATA>
et leur contenu.- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- patternstr, optional
Une expression régulière déterminant le ou les fragments du descriptif PostgreSQL à renvoyer. Si non spécifié, la requête récupèrera tout le descriptif expurgé des balises
<METADATA>
et de leur contenu. Si l’expression régulière est invalide (d’après les critères de PostgreSQL), la requête ne renverra rien.- flagsstr, optional
Paramètres associés à l’expression rationnelle. Si PostgreSQL ne les reconnaît pas, la requête ne renverra rien.
- **kwargsdict, optional
Paramètres supplémentaires ignorés.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL, incluant son tuple de paramètres.
Avertissement
Cette requête échouera si PlumePg n’est pas installée sur la base.
Notes
Cette fonction est référencée par le module
plume.pg.computer
.
- plume.pg.queries.query_get_creation_date(schema_name, table_name, **kwargs)#
Requête de récupération de la date de création d’une table.
À utiliser comme suit :
>>> query = query_get_creation_date(schema_name='nom du schéma', ... table_name='nom de la table', **compute_params) >>> cur.execute(*query) >>> result = cur.fetchall()
compute_params
est le dictionnaire fourni par la clé “compute parameters” du dictionnaire interne associé à la clé courante du dictionnaire de widgets.La liste ainsi obtenue contient un unique tuple dont le seul élément est la date recherchée, si tant est que l’information soit disponible.
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la table. Il est possible d’appliquer cette fonction sur des vues ou d’autres types de relations, mais la requête produite ne renverra à coup sûr rien.
- **kwargsdict, optional
Paramètres supplémentaires ignorés.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL, incluant son tuple de paramètres.
Avertissement
Cette requête échouera si PlumePg n’est pas installée sur la base. Par ailleurs, elle ne renverra de date que si le suivi des dates a été activé pour la table considérée.
Notes
Cette fonction est référencée par le module
plume.pg.computer
.
- plume.pg.queries.query_get_geom_centroid(schema_name, table_name, geom_name)#
Requête de calcul côté serveur du centre du rectangle d’emprise d’une couche.
À utiliser comme suit :
>>> query = query_get_geom_centroid('nom du schéma', ... 'nom de la relation', 'nom du champ de géométrie') >>> cur.execute(*query) >>> centroid_geom = cur.fetchone()[0]
À noter que le résultat est une géométrie dont le système de coordonnées n’est pas explicité. Il faudra le récupérer via
query_get_geom_srid()
, puis appliquer la fonctionplume.rdf.utils.wkt_with_srid()
pour obtenir la représention du centroïde attendue en RDF :>>> from plume.rdf.utils import wkt_with_srid >>> query = query_get_geom_srid('nom du schéma', 'nom de la relation' ... 'nom du champ de géométrie') >>> cur.execute(*query) >>> srid = cur.fetchone()[0] >>> centroid = wkt_with_srid(centroid_geom, srid)
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- geom_namestr
Nom du champ de géométrie.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
Avertissement
Cette requête échouera si PostGIS n’est pas installé sur la base. Il est donc fortement recommandé de vérifier d’abord la présence de PostGIS avec
query_exists_extension()
:>>> query = query_exists_extension('postgis') >>> cur.execute(*query) >>> postgis_exists = cur.fetchone()[0]
- plume.pg.queries.query_get_geom_extent(schema_name, table_name, geom_name)#
Requête de calcul côté serveur du rectangle d’emprise d’une couche.
À utiliser comme suit :
>>> query = query_get_geom_extent('nom du schéma', ... 'nom de la relation', 'nom du champ de géométrie') >>> cur.execute(*query) >>> bbox_geom = cur.fetchone()[0]
À noter que le résultat est une géométrie dont le système de coordonnées n’est pas explicité. Il faudra le récupérer via
query_get_geom_srid()
, puis appliquer la fonctionplume.rdf.utils.wkt_with_srid()
pour obtenir la représention du rectangle d’emprise attendue en RDF :>>> from plume.rdf.utils import wkt_with_srid >>> query = query_get_geom_srid('nom du schéma', 'nom de la relation' ... 'nom du champ de géométrie') >>> cur.execute(*query) >>> srid = cur.fetchone()[0] >>> bbox = wkt_with_srid(bbox_geom, srid)
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- geom_namestr
Nom du champ de géométrie.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
Avertissement
Cette requête échouera si PostGIS n’est pas installé sur la base. Il est donc fortement recommandé de vérifier d’abord la présence de PostGIS avec
query_exists_extension()
:>>> query = query_exists_extension('postgis') >>> cur.execute(*query) >>> postgis_exists = cur.fetchone()[0]
- plume.pg.queries.query_get_geom_srid(schema_name, table_name, geom_name)#
Requête de récupération du référentiel de coordonnées d’une couche.
À utiliser comme suit :
>>> query = query_get_geom_srid('nom du schéma', 'nom de la relation' ... 'nom du champ de géométrie') >>> cur.execute(*query) >>> srid = cur.fetchone()[0]
Le référentiel ainsi obtenu est de la forme
'Autorité:Code'
.- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- geom_namestr
Nom du champ de géométrie à considérer.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
Avertissement
Cette requête échouera si PostGIS n’est pas installé sur la base. Il est donc fortement recommandé de vérifier d’abord la présence de PostGIS avec
query_exists_extension()
:>>> query = query_exists_extension('postgis') >>> cur.execute(*query) >>> postgis_exists = cur.fetchone()[0]
- plume.pg.queries.query_get_modification_date(schema_name, table_name, **kwargs)#
Requête de récupération de la date de dernière modification d’une table.
À utiliser comme suit :
>>> query = query_get_modification_date(schema_name='nom du schéma', ... table_name='nom de la table', **compute_params) >>> cur.execute(*query) >>> result = cur.fetchall()
compute_params
est le dictionnaire fourni par la clé “compute parameters” du dictionnaire interne associé à la clé courante du dictionnaire de widgets.La liste ainsi obtenue contient un unique tuple dont le seul élément est la date recherchée, si tant est que l’information soit disponible.
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la table. Il est possible d’appliquer cette fonction sur des vues ou d’autres types de relations, mais la requête produite ne renverra à coup sûr rien.
- **kwargsdict, optional
Paramètres supplémentaires ignorés.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL, incluant son tuple de paramètres.
Avertissement
Cette requête échouera si PlumePg n’est pas installée sur la base. Par ailleurs, elle ne renverra de date que si le suivi des dates a été activé pour la table considérée.
Notes
Cette fonction est référencée par le module
plume.pg.computer
.
- plume.pg.queries.query_get_relation_kind(schema_name, table_name)#
Requête qui récupère le type d’une relation PostgreSQL.
À utiliser comme suit :
>>> query = query_get_relation_kind('nom du schéma', ... 'nom de la relation') >>> cur.execute(*query) >>> relkind = cur.fetchone()[0]
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_get_srid_list(schema_name, table_name, **kwargs)#
Requête de récupération de la liste des référentiels de coordonnées utilisés par les géométries d’une relation.
À utiliser comme suit :
>>> query = query_get_srid_list(schema_name='nom du schéma', ... table_name='nom de la relation', **compute_params) >>> cur.execute(*query) >>> result = cur.fetchall()
compute_params
est le dictionnaire fourni par la clé “compute parameters” du dictionnaire interne associé à la clé courante du dictionnaire de widgets.La liste ainsi obtenue contient des tuples dont le premier élément est l’identifiant de l’autorité qui référence le référentiel et le second élément est le code du référentiel dans le registre de cette autorité.
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- **kwargsdict, optional
Paramètres supplémentaires ignorés.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL, incluant son tuple de paramètres.
Avertissement
Cette requête échouera si PostGIS n’est pas installé sur la base. Il est donc fortement recommandé de vérifier d’abord la présence de PostGIS avec
query_exists_extension()
:>>> query = query_exists_extension('postgis') >>> cur.execute(*query) >>> postgis_exists = cur.fetchone()[0]
Notes
Cette fonction est référencée par le module
plume.pg.computer
.
- plume.pg.queries.query_get_table_comment(schema_name, table_name)#
Requête de récupération du descriptif d’une table ou vue.
À utiliser comme suit :
>>> query = query_get_table_comment('nom du schéma', ... 'nom de la relation') >>> cur.execute(*query) >>> old_description = cur.fetchone()[0]
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_insert_or_update_any_table(schema_name, table_name, pk_name, data, columns=None, no_update=False)#
Requête qui crée ou met à jour un enregistrement d’une table quelconque.
À utiliser comme suit :
>>> query = query_insert_or_update_any_table( ... 'nom du schéma', 'nom de la table', 'nom du champ de clé primaire', ... ['valeur champ 1', 'valeur champ 2', 'valeur champ 3'], ... ['nom champ 1', 'nom champ 2', 'nom champ 3'] ... ) >>> cur.execute(*query) >>> new_data = cur.fetchone()[0]
new_data
est un dictionnaire contenant l’enregistrement mis à jour, tel qu’il est stocké en base.- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la table.
- pk_namestr
Nom du champ de clé primaire. La fonction ne prend pas en charge les tables avec des clés primaires multi-champs. Il est admissible d’utiliser un champ non nul prenant des valeurs uniques qui ne serait pas formellement la clé primaire de la relation.
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
.- no_updatebool, default False
Si
True
, la requête n’aura pas d’effet sur les enregistrements pré-existants.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_insert_or_update_meta_categorie(data, columns=None, no_update=False)#
Requête qui crée ou met à jour une catégorie de métadonnées dans la table meta_categorie de PlumePg.
À utiliser comme suit :
>>> query = query_insert_or_update_meta_categorie(data) >>> cur.execute(*query) >>> new_data = cur.fetchone()[0]
new_data
est un dictionnaire contenant l’enregistrement mis à jour, tel qu’il est stocké en base.Pour la mise à jour d’une catégorie commune, il est impératif :
que le champ
origin
soit présent et prenne la valeur'shared'
;que l’identifiant
path
soit renseigné.
Si l’une au moins de ces deux conditions n’est pas remplie, la catégorie de métadonnée est considérée comme locale.
- Parameters:
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
.- no_updatebool, default False
Si
True
, la requête n’aura pas d’effet sur les enregistrements pré-existants. Dans ce cas, pour une métadonnée locale, la requête ne renvoie rien. Pour une métadonnée commune, elle renvoie l’enregistrement d’origine.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_insert_or_update_meta_tab(data, columns=None, no_update=False)#
Requête qui crée ou met à jour un onglet dans la table meta_tab de PlumePg.
À utiliser comme suit :
>>> query = query_insert_or_update_meta_tab(data) >>> cur.execute(*query) >>> new_data = cur.fetchone()[0]
new_data
est un dictionnaire contenant l’enregistrement mis à jour, tel qu’il est stocké en base.- Parameters:
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
.- no_updatebool, default False
Si
True
, la requête n’aura pas d’effet sur les enregistrements pré-existants. Dans ce cas, la requête ne renvoie rien.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_insert_or_update_meta_template(data, columns=None, no_update=False)#
Requête qui crée ou met à jour un modèle de fiches de métadonnées dans la table meta_template de PlumePg.
À utiliser comme suit :
>>> query = query_insert_or_update_meta_template(data) >>> cur.execute(*query) >>> new_data = cur.fetchone()[0]
new_data
est un dictionnaire contenant l’enregistrement mis à jour, tel qu’il est stocké en base.- Parameters:
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
.- no_updatebool, default False
Si
True
, la requête n’aura pas d’effet sur les enregistrements pré-existants. Dans ce cas, la requête ne renvoie rien.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_insert_or_update_meta_template_categories(data, columns=None, no_update=False)#
Requête qui crée ou met à jour une association modèle-catégorie dans la table meta_template_categories de PlumePg.
À utiliser comme suit :
>>> query = query_insert_or_update_meta_template_categories(data) >>> cur.execute(*query) >>> new_data = cur.fetchone()[0]
new_data
est un dictionnaire contenant l’enregistrement mis à jour, tel qu’il est stocké en base.- Parameters:
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist, optional
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
. Ce paramètre est obligatoire si data est une liste de valeur.- no_updatebool, default False
Si
True
, la requête n’aura pas d’effet sur les enregistrements pré-existants. Dans ce cas, la requête ne renvoie rien.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_is_relation_owner(schema_name, table_name)#
Requête qui vérifie que le rôle courant est membre du propriétaire d’une relation (table, etc.).
À utiliser comme suit :
>>> query = query_is_relation_owner('nom du schéma', 'nom de la relation') >>> cur.execute(*query) >>> res = cur.fetchone() >>> is_owner = res[0] if res else False
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_is_template_admin()#
Requête qui vérifie que le rôle courant dispose des privilèges nécessaire pour configurer les modèles de fiches de métadonnées de PlumePg.
Concrètement, elle vérifie les privilèges suivants :
USAGE
sur le schémaz_plume
.INSERT
,UPDATE
,DELETE
sur la table d’association des catégories aux modèles,z_plume.meta_template_categories
.INSERT
,UPDATE
,DELETE
sur la table des modèles,z_plume.meta_template
.INSERT
,UPDATE
,DELETE
sur la table des catégories,z_plume.meta_categorie
.INSERT
,UPDATE
,DELETE
sur la table des onlgets,z_plume.meta_tab
.
Ces privilèges ne sont pas tout à fait suffisants pour pouvoir éditer les modèles (il faut aussi des droits sur les séquences, les types, etc.), mais en disposer signifer qu’on a voulu habiliter l’utilisateur à les modifier. S’il lui manque des droits annexes, Plume lui fera savoir par un message d’erreur qui permettra à l’administrateur du serveur d’accorder les privilèges manquants.
La requête suppose que l’extension PostgreSQL PlumePg est installée sur le serveur, sans quoi son exécution échouera.
À utiliser comme suit :
>>> query = query_is_template_admin >>> cur.execute(*query) >>> res = cur.fetchone() >>> is_template_admin = res[0]
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_list_templates(schema_name, table_name)#
Requête d’import de la liste des modèles disponibles.
À utiliser comme suit :
>>> query = query_list_templates('nom du schéma', 'nom de la relation') >>> cur.execute(*query) >>> templates = cur.fetchall()
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
Notes
La requête interroge la table
z_plume.meta_template
créée par l’extension PlumePg. Au lieu d’importer tel quel le contenu de son champsql_filter
, elle l’exécute et renvoie un booléen indiquant si la condition qu’il spécifie est remplie.
- plume.pg.queries.query_plume_pg_check(min_version='0.3.1', max_version='1.0.0')#
Requête qui vérifie qu’une version compatible de PlumePg est installée sur la base cible.
Elle s’assure aussi que l’utilisateur dispose des privilèges nécessaires sur les objets de PlumePg.
À utiliser comme suit :
>>> query = query_plume_pg_check(min_version='0.1.0') >>> cur.execute(*query) >>> result = cur.fetchone()
result
est un tuple constitué des éléments suivants :[0]
est un booléen. S’il vautTrue
, tout est en ordre pour l’utilisation des modèles de PlumePg. Sinon, les autres éléments du tuple précisent le problème.[1]
est une liste rappelant la version minimale (incluse) et la version maximale (exclue) de PlumePg compatibles avec la version courante de Plume.[2]
est la version installée de PlumePg, ouNone
si l’extension n’est pas installée sur la base courante.[3]
est la version de référence de PlumePg disponible sur le serveur, ouNone
si l’extension n’est pas disponible sur le serveur.[4]
est une liste de schémas sur lesquels l’utilisateur ne dispose pas du privilègeUSAGE
requis.[5]
est une liste de tables et vues sur lesquelles l’utilisateur ne dispose pas du privilègeSELECT
requis. À noter que les droits sur les tables et vues ne sont contrôlés que si l’utilisateur dispose de tous les privilèges nécessaires sur les schémas.
- Parameters:
- min_versionstr, optional
La version minimale de PlumePg compatible avec la version courante de Plume (incluse). Elle doit être de la forme
'x.y.z'
oùx
,y
etz
sont des entiers. Par défaut, il s’agira dePLUME_PG_MIN_VERSION
. Il est possible d’indiquerNone
lorsqu’il n’y a pas de contrainte sur la version minimale.- max_versionstr, optional
La version maximale de PlumePg compatible avec la version courante de Plume (exclue). Elle doit être de la forme
'x.y.z'
oùx
,y
etz
sont des entiers. Par défaut, il s’agira dePLUME_PG_MAX_VERSION
. Il est possible d’indiquerNone
, la version maximale sera alors déduite du premier chiffre de la borne inférieure. Par exemple,'4.0.0'
serait la borne supérieure pour la version de référence'3.1.1'
.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL et son tuple de paramètres.
- plume.pg.queries.query_plume_pg_create()#
Requête qui active l’extension PlumePg sur la base courante.
La requête générée par cette fonction ne peut être utilisée que si
CREATE
était listé dans le résultat renvoyé par la fonctionquery_plume_pg_status()
.À utiliser comme suit :
>>> query = query_plume_pg_create() >>> cur.execute(*query)
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_plume_pg_drop()#
Requête qui désactive l’extension PlumePg sur la base courante.
La requête générée par cette fonction ne peut être utilisée que si
DROP
était listé dans le résultat renvoyé par la fonctionquery_plume_pg_status()
.Il est nécessaire de demander confirmation de l’utilisateur avant de réaliser cette action, car elle entraîne la perte de tous les modèles et dates enregistrés.
À utiliser comme suit :
>>> query = query_plume_pg_drop() >>> cur.execute(*query)
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_plume_pg_import_sample_template(templates=None)#
Requête qui charge un ou plusieurs modèles pré-configurés sur la base courante.
Cette fonction peut également être utilisée pour réinitialiser les modèles. Elle nécessite évidemment que l’extension PlumePg soit activée sur la base.
À utiliser comme suit :
>>> query = query_plume_pg_import_sample_template() >>> cur.execute(*query)
- Parameters:
- templates str or list(str) or tuple(str), optional
Nom d’un modèle ou plusieurs modèles pré-configurés (sous forme de liste ou de tuple) à charger. Si l’argument n’est pas fourni, tous les modèles pré-configurés sont chargés.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_plume_pg_status()#
Requête qui évalue l’état de l’extension PlumePg sur la base PostgreSQL cible.
Concrètement, cette requête liste les actions que l’utilisateur est habilité à réaliser vis-à-vis de l’extension PlumePg. À noter qu’à date toutes les actions concernées ne peuvent être réalisées que par un super-utilisateur.
À utiliser comme suit :
>>> query = query_extension_status('nom de l'extension') >>> cur.execute(*query) >>> actions = cur.fetchone()[0]
Le résultat est
None
si aucune action n’est possible, sinon il s’agit de la liste des actions disponibles, parmi :CREATE
- activation de l’extension sur la base.UPDATE
- mise à jour de l’extension.DROP
- désactivation de l’extension.STAMP RECORDING ENABLE
- activation du suivi intégral des dates de création et modification des tables. Cette action est listée dès lors que l’un au moins des déclencheurs sur évènement n’est pas actif.STAMP RECORDING DISABLE
- désactivation du suivi intégral des dates. Cette action est listée dès lors que l’un au moins des déclencheurs sur évènement est actif.STAMP TO METADATA ENABLE
- activation de l’enregistrement automatique des dates dans les métadonnées.STAMP TO METADATA DISABLE
- désactivation de l’enregistrement automatique des dates dans les métadonnées.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
Voir aussi
query_plume_pg_check()
Pour vérifier la compatibilité des versions de Plume et PlumePg.
- plume.pg.queries.query_plume_pg_update()#
Requête qui met à jour l’extension PlumePg sur la base courante.
La requête générée par cette fonction ne peut être utilisée que si
UPDATE
était listé dans le résultat renvoyé par la fonctionquery_plume_pg_status()
.À utiliser comme suit :
>>> query = query_plume_pg_update() >>> cur.execute(*query)
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_any_enum_type(schema_name, type_name)#
Requête qui récupère les valeurs d’un type énuméré quelconque.
À utiliser comme suit :
>>> query = query_read_any_enum_type( ... 'nom du schéma', 'nom du type' ... ) >>> cur.execute(*query) >>> enum_values = cur.fetchone()[0]
enum_values
est une liste triée par ordre alphabétique.- Parameters:
- schema_namestr
Nom du schéma.
- type_namestr
Nom du type énuméré.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_any_row(schema_name, table_name, pk_name, data, columns=None)#
Requête qui renvoie une ligne de données d’une table quelconque.
À utiliser comme suit :
>>> query = query_read_any_row( ... 'nom du schéma', 'nom de la table', 'nom du champ de clé primaire', ... ['valeur champ 1', 'valeur de la clé primaire', 'valeur champ 3'], ... ['nom champ 1', 'nom du champ de clé primaire', 'nom champ 3'] ... ) >>> cur.execute(*query) >>> row = cur.fetchone()
La fonction renvoie une erreur si data et columns ne contiennent pas de valeur pour le champ de clé primaire. Il ne pose aucun problème de fournir des valeurs pour d’autres champs, même si la fonction n’en fera rien.
Si l’identifiant spécifié avait bien une correspondance,
row[0]
sera un dictionnaire contenant les noms et valeurs des champs de l’enregistrement.- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la table.
- pk_namestr
Nom du champ de clé primaire. La fonction ne prend pas en charge les tables avec des clés primaires multi-champs. Il est admissible d’utiliser un champ non nul prenant des valeurs uniques qui ne serait pas formellement la clé primaire de la relation.
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
. Ce paramètre est obligatoire si data est une liste de valeur.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_enum_meta_compute()#
Requête qui récupère les valeurs admises par le champ compute des tables meta_categorie et meta_template_categories.
À utiliser comme suit :
>>> query = query_read_enum_meta_compute() >>> cur.execute(*query) >>> enum_values = cur.fetchone()[0]
enum_values
est une liste triée par ordre alphabétique.- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_enum_meta_datatype()#
Requête qui récupère les valeurs admises par le champ datatype des tables meta_categorie et meta_template_categories.
À utiliser comme suit :
>>> query = query_read_enum_meta_datatype() >>> cur.execute(*query) >>> enum_values = cur.fetchone()[0]
enum_values
est une liste triée par ordre alphabétique.- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_enum_meta_geo_tool()#
Requête qui récupère les valeurs admises par le champ geo_tools des tables meta_categorie et meta_template_categories.
À utiliser comme suit :
>>> query = query_read_enum_meta_geo_tool() >>> cur.execute(*query) >>> enum_values = cur.fetchone()[0]
enum_values
est une liste triée par ordre alphabétique.- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_enum_meta_special()#
Requête qui récupère les valeurs admises par le champ special des tables meta_categorie et meta_template_categories.
À utiliser comme suit :
>>> query = query_read_enum_meta_special() >>> cur.execute(*query) >>> enum_values = cur.fetchone()[0]
enum_values
est une liste triée par ordre alphabétique.- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_meta_categorie()#
Requête qui importe le contenu de la table des catégories de métadonnées (meta_categorie) de PlumePg.
À utiliser comme suit :
>>> query = query_read_meta_categorie() >>> cur.execute(*query) >>> categories = cur.fetchall()
categories
est une liste de tuples, où chaque tuple correspond à une catégorie. Les tuples contiennent un unique élément : un dictionnaire dont les clés sont les noms des champs de la table des catégories et les valeurs sont les valeurs contenues dans ces champs pour la catégorie considéré. L’ordre des clés ne respecte pas l’ordre des champs dans la table.- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_meta_tab()#
Requête qui importe le contenu de la table des onglets (meta_tab) de PlumePg.
À utiliser comme suit :
>>> query = query_read_meta_tab() >>> cur.execute(*query) >>> tabs = cur.fetchall()
tabs
est une liste de tuples, où chaque tuple correspond à un onglet. Les tuples contiennent un unique élément : un dictionnaire dont les clés sont les noms des champs de la table des onglets et les valeurs sont les valeurs contenues dans ces champs pour l’onglet considéré. L’ordre des clés ne respecte pas l’ordre des champs dans la table.- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_meta_template()#
Requête qui importe le contenu de la table des modèles (meta_template) de PlumePg.
À utiliser comme suit :
>>> query = query_read_meta_template() >>> cur.execute(*query) >>> templates = cur.fetchall()
templates
est une liste de tuples, où chaque tuple correspond à un modèle. Les tuples contiennent un unique élément : un dictionnaire dont les clés sont les noms des champs de la table des modèles et les valeurs sont les valeurs contenues dans ces champs pour le modèle considéré. L’ordre des clés ne respecte pas l’ordre des champs dans la table.- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_read_meta_template_categories()#
Requête qui importe le contenu de la table d’association des catégories aux modèles (meta_template_categories) de PlumePg.
À utiliser comme suit :
>>> query = query_read_meta_template_categories() >>> cur.execute(*query) >>> template_categories = cur.fetchall()
template_categories
est une liste de tuples, où chaque tuple correspond à un couple modèle + catégorie. Les tuples contiennent un unique élément : un dictionnaire dont les clés sont les noms des champs de la table d’association et les valeurs sont les valeurs contenues dans ces champs pour le couple modèle + catégorie considéré. L’ordre des clés ne respecte pas l’ordre des champs dans la table.- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_stamp_recording_disable()#
Requête qui désactive entièrement le suivi des dates de création/modification des tables via PlumePg.
La requête générée par cette fonction ne peut être utilisée que si
STAMP RECORDING DISABLE
était listé dans le résultat renvoyé par la fonctionquery_plume_pg_status()
.À utiliser comme suit :
>>> query = query_stamp_recording_disable() >>> cur.execute(*query)
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_stamp_recording_enable()#
Requête qui active le suivi complet des dates de création/modification des tables via PlumePg.
La requête générée par cette fonction ne peut être utilisée que si
STAMP RECORDING ENABLE
était listé dans le résultat renvoyé par la fonctionquery_plume_pg_status()
.À utiliser comme suit :
>>> query = query_stamp_recording_enable() >>> cur.execute(*query)
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_stamp_to_metadata_disable()#
Requête qui désactive la copie automatique des dates enregistrées par le système de suivi de PlumePg dans les fiches de métadonnées.
La requête générée par cette fonction ne peut être utilisée que si
STAMP TO METADATA DISABLE
était listé dans le résultat renvoyé par la fonctionquery_plume_pg_status()
.À utiliser comme suit :
>>> query = query_stamp_to_metadata_disable() >>> cur.execute(*query)
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_stamp_to_metadata_enable()#
Requête qui active la copie automatique des dates enregistrées par le système de suivi de PlumePg dans les fiches de métadonnées.
La requête générée par cette fonction ne peut être utilisée que si
STAMP TO METADATA ENABLE
était listé dans le résultat renvoyé par la fonctionquery_plume_pg_status()
.À utiliser comme suit :
>>> query = query_stamp_to_metadata_enable() >>> cur.execute(*query)
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_template_tabs(tpl_label)#
Requête d’import des onglets utilisés par un modèle.
À utiliser comme suit :
>>> query = query_template_tabs('nom du modèle') >>> cur.execute(*query) >>> tabs = cur.fetchall()
- Parameters:
- tpl_labelstr
Nom du modèle choisi.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
Notes
La requête interroge les tables
z_plume.meta_tab
etz_plume.meta_template_categories
créées par l’extension PlumePg. Elle ne doit donc être exécutée qu’après contrôle de l’existence de l’extension.L’ordre de la liste résultant de l’exécution de la requête est l’ordre dans lequel le modèle prévoit que les onglets soient présentés à l’utilisateur.
- plume.pg.queries.query_update_any_table(schema_name, table_name, pk_name, data, columns=None)#
Requête qui met à jour un enregistrement existant d’une table quelconque.
La requête sera sans effet si l’enregistrement n’existait pas.
À utiliser comme suit :
>>> query = query_update_any_table( ... 'nom du schéma', 'nom de la table', 'nom du champ de clé primaire', ... ['valeur champ 1', 'valeur champ 2', 'valeur champ 3'], ... ['nom champ 1', 'nom champ 2', 'nom champ 3'] ... ) >>> cur.execute(*query) >>> new_data = cur.fetchone()[0]
new_data
est un dictionnaire contenant l’enregistrement mis à jour, tel qu’il est stocké en base.- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la table.
- pk_namestr
Nom du champ de clé primaire. La fonction ne prend pas en charge les tables avec des clés primaires multi-champs. Il est admissible d’utiliser un champ non nul prenant des valeurs uniques qui ne serait pas formellement la clé primaire de la relation.
- datalist or dict
data représente un enregistrement de la table. Il peut s’agir de :
La liste des valeurs des champs, dans l’ordre de columns, qui doit alors être renseigné.
Un dictionnaire dont les clés sont les noms des champs. columns est ignoré dans ce cas.
- columnslist
Liste des noms des champs de la table des onglets pour lesquels data fournit des valeurs, exactement dans le même ordre. Il est possible d’obtenir la liste complète avec
query_get_columns()
.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_update_column_comment(schema_name, table_name, column_name, description='')#
Requête de mise à jour du descriptif d’un champ.
À utiliser comme suit :
>>> query = query_update_column_comment('nom du schéma', ... 'nom de la relation', 'nom du champ', ... 'Nouveau descriptif du champ') >>> cur.execute(*query)
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- column_namestr
Nom du champ.
- descriptionstr, optional
Le nouveau descriptif du champ.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- plume.pg.queries.query_update_columns_comments(schema_name, table_name, widgetsdict)#
Requête de mise à jour des descriptifs des champs d’une table.
À utiliser comme suit :
>>> query = query_update_columns_comments('nom du schéma', ... 'nom de la relation', widgetsdict) >>> if query: ... cur.execute(*query)
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- widgetsdictplume.rdf.widgetsdict.WidgetsDict
Le dictionnaire de widgets qui contient les descriptifs actualisés des champs.
- Returns:
- PgQueryWithArgs or None
Une requête prête à être envoyée au serveur PostgreSQL. La fonction renvoie
None
si elle ne trouve aucun descriptif de champ dans le dictionnaire de widgets.
Notes
À noter que cette requête pourrait échouer si des champs ont été supprimés ou renommés entre temps.
- plume.pg.queries.query_update_table_comment(schema_name, table_name, relation_kind='r', description='')#
Requête de mise à jour du descriptif d’une table ou vue.
À utiliser comme suit :
>>> query = query_update_table_comment('nom du schéma', ... 'nom de la relation', 'type de relation', ... 'Nouveau descriptif') >>> cur.execute(*query)
- Parameters:
- schema_namestr
Nom du schéma.
- table_namestr
Nom de la relation (table, vue…).
- relation_kind{“r”, “v”, “m”, “f”, “p”}, optional
Le type de relation.
'r'
par défaut, ce qui correspond à une table simple.- descriptionstr, optional
Le nouveau descriptif.
- Returns:
- PgQueryWithArgs
Une requête prête à être envoyée au serveur PostgreSQL.
- Raises:
- UnknownParameterValue
Si le type de relation n’est pas l’une des valeurs autorisées.