Big README update
This commit is contained in:
parent
473a1a0878
commit
529727e78f
1 changed files with 71 additions and 10 deletions
81
README.md
81
README.md
|
@ -13,7 +13,7 @@ Il est vivement conseiller de faire fonctionner ce projet dans un
|
||||||
2. créer l'environnement virtuel:
|
2. créer l'environnement virtuel:
|
||||||
```
|
```
|
||||||
cd projet_INSEE
|
cd projet_INSEE
|
||||||
python -n venv .venv
|
python -m venv .venv
|
||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
```
|
```
|
||||||
3. intaller les prérequis:
|
3. intaller les prérequis:
|
||||||
|
@ -23,8 +23,31 @@ Il est vivement conseiller de faire fonctionner ce projet dans un
|
||||||
|
|
||||||
L'installation est maintenant opérationnelle. Il faut penser à activer
|
L'installation est maintenant opérationnelle. Il faut penser à activer
|
||||||
l'environnement virtuel à chaque nouvelle ouverture d'un terminal.
|
l'environnement virtuel à chaque nouvelle ouverture d'un terminal.
|
||||||
|
|
||||||
|
### ATTENTION!
|
||||||
|
|
||||||
|
L'ensemble des script présent ici nécessitent **IMPÉRATIVEMENT** Python3. Il est
|
||||||
|
parfois nécessaire d'adapter les commandes ci-dessus en fonction de votre
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Au CREMI par exemple, la création de l'environnement virtuel doit se faire aevc
|
||||||
|
la commande suivante:
|
||||||
|
|
||||||
|
```
|
||||||
|
python3 -m venv .venv
|
||||||
|
```
|
||||||
|
|
||||||
## Les éléments du projet
|
## Les éléments du projet
|
||||||
|
|
||||||
|
L'ensemble des scripts présents dans ce dépôt permettent l'affichage
|
||||||
|
d'informations supplémentaires via des paramètres de la ligne de commandes:
|
||||||
|
|
||||||
|
* *messages d'informations* via l'option -V. Ces informations renseignent
|
||||||
|
l'utilisateurs sur les temps d'exécutions des différentes parties de chacun
|
||||||
|
des scripts.
|
||||||
|
* *message de debug* via l'option `--debug`. Affiche des iunformations
|
||||||
|
détaillées sur les actions et résultats des scripts.
|
||||||
|
|
||||||
## Consolider les fichiers bruts
|
## Consolider les fichiers bruts
|
||||||
|
|
||||||
C'est le script `csvprocess.py` qui se charge de l'analyse des fichiers `csv`
|
C'est le script `csvprocess.py` qui se charge de l'analyse des fichiers `csv`
|
||||||
|
@ -43,14 +66,6 @@ C'est le script `createdatabase.py` qui se charge de la création de la base de
|
||||||
données et de l'importation des fichiers `csv` consolidés créés par le précédent
|
données et de l'importation des fichiers `csv` consolidés créés par le précédent
|
||||||
script.
|
script.
|
||||||
|
|
||||||
Ce script nécessite un fichier de configuration avec les paramètres de
|
|
||||||
connection à la base PostgreSQL. Ce fiochier prend la forme suivante:
|
|
||||||
|
|
||||||
```
|
|
||||||
host=<host> user=<user> password=<password>
|
|
||||||
```
|
|
||||||
|
|
||||||
Les valeurs sont à remplacer par les votres.
|
|
||||||
|
|
||||||
La création des éléments se fait dans un nouveau schéma, il se nomme par défaut
|
La création des éléments se fait dans un nouveau schéma, il se nomme par défaut
|
||||||
`insee` mais peut être changé via le paramètre `--schema-name`.
|
`insee` mais peut être changé via le paramètre `--schema-name`.
|
||||||
|
@ -62,9 +77,37 @@ disponibles.
|
||||||
./createdatabase.py --help
|
./createdatabase.py --help
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Nom dynamique de schéma et injection SQL
|
||||||
|
|
||||||
|
La definition dynamique du nom du schema nous oblige à utiliser la fonction
|
||||||
|
`AsIs`. Cette fonction ne permet pas à `cur.execute()` la mise en place de
|
||||||
|
sécuritées afin de prévenir les injections SQL.
|
||||||
|
|
||||||
|
Lors de la définition de la valeur de ce paramètre, nous le vérifions avec la
|
||||||
|
fonction `check_schema_name()`. Afin de définir le nombre maximum de caractères
|
||||||
|
composant le nom d'un schéma, nous avons vérifié dans le code source de
|
||||||
|
Postgre : il est de 63 caractètes (fichier pg_config_manual.h).
|
||||||
|
|
||||||
|
Cette vérification nous permet donc d'éviter le problème des injections et
|
||||||
|
est utilisée dans chacun des scripts accèdant à la base.
|
||||||
|
|
||||||
|
### Paramètres de connexion à la base
|
||||||
|
|
||||||
|
Un fichier de configuration avec les paramètres de connection à la base
|
||||||
|
PostgreSQL est nécessaire . Ce fichier prend la forme suivante:
|
||||||
|
|
||||||
|
```
|
||||||
|
host=<host> user=<user> password=<password>
|
||||||
|
```
|
||||||
|
|
||||||
|
Les valeurs sont à remplacer par les votres. Par défaut les scripts qui
|
||||||
|
nécessite une connexion à la base utilisent le fichier `.pgconn` dans le
|
||||||
|
répertoire courant. Il est possible de le changer avec le paramètre `-f`
|
||||||
|
(version longe `--connexion-file`) de chacun des scripts.
|
||||||
|
|
||||||
## Question 1: mettre en place des requêtes
|
## Question 1: mettre en place des requêtes
|
||||||
|
|
||||||
Le script `get_state_statistics` permet d'affichier des informations sur une
|
Le script `get_state_statistics` permet d'afficher des informations sur une
|
||||||
région en particulier. Il suffit de lui passer via l'option `-t` (ou `--state`
|
région en particulier. Il suffit de lui passer via l'option `-t` (ou `--state`
|
||||||
en version longue) la région désirée. Il est aussi possible de lui demander une
|
en version longue) la région désirée. Il est aussi possible de lui demander une
|
||||||
année en particulier pour l'affichage des informations demographiques viam
|
année en particulier pour l'affichage des informations demographiques viam
|
||||||
|
@ -94,3 +137,21 @@ région et département et la procédure. Avec l'option `-c` (version longe
|
||||||
```
|
```
|
||||||
./create_procedure.py --call
|
./create_procedure.py --call
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Question 4: création d'un Trigger
|
||||||
|
|
||||||
|
Le script `create_trigger.py` permet de mettre en place plusieurs chose:
|
||||||
|
|
||||||
|
* Le blocage de ma modification des éléments des tables *département* et
|
||||||
|
*région*
|
||||||
|
* Le calcul de la population totale d'un département puis d'une région et la
|
||||||
|
modification de la colonne dans ces même tables.
|
||||||
|
|
||||||
|
Pour la modification des colonnes, nous désactivons les *triggers* empêchant la
|
||||||
|
modification de ces tables le temps de la modification puis les réactivons.
|
||||||
|
|
||||||
|
L'utilisation du script est simple:
|
||||||
|
|
||||||
|
```
|
||||||
|
./create_trigger.py
|
||||||
|
```
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue