# QueryCraft
[TOC]
## Le nom ?
Un nom en anglais qui évoque l'idée de "façonner" ou "construire" des requêtes SQL de manière intuitive, parfait pour une approche pédagogique. (GPT 4o ;-) )
## Objectifs
L'objectif de cette bibliothèque est de proposer des classes Python permettant de manipuler des requêtes SQL.
Elle propose aussi des applications pour décomposer l'exécution d'une requête SQL sur une base de données PostgreSQL, MySQL ou SQLite.
## Fonctionnalités
- **Analyse de requêtes SQL** : Analysez et comprenez la structure de vos requêtes SQL.
- **Décomposition de requêtes** : Décomposez vos requêtes SQL en étapes simples pour une meilleure compréhension.
- **Support multi-SGBD** : Compatible avec PostgreSQL, MySQL et SQLite.
- **Interface en ligne de commande** : Utilisez l'application en ligne de commande pour analyser et décomposer vos requêtes SQL.
## Limitations
- **Opérateurs SQL non couverts** : Certains opérateurs SQL avancés peuvent ne pas être entièrement pris en charge, en particulier les opérateurs ensemblistes.
Par exemple, les opérateurs `INTERSECT`, `EXCEPT` et `UNION` ne sont pas pris en charge.
Les sous-requêtes dans le 'From' sont prises en charges, mais pas les sous-requêtes dans le 'Where', le 'Having' et le 'Select' (pas de pas à pas possible).
- **Support limité des fonctions SQL** : Certaines fonctions SQL avancées peuvent ne pas être entièrement prises en charge.
- **Compatibilité avec les versions de SGBD** : La compatibilité avec les versions spécifiques de PostgreSQL, MySQL et SQLite peut varier.
## Installation
```shell
git clone https://gitlab.univ-nantes.fr/ls2n-didactique/querycraft.git
cd querycraft
pip install -e .
```
ou
```shell
pip install querycraft
```
## Usage
Application qui permet de décomposer l'exécution d'une requête SQL sur une base de données PostgreSQL.
```
usage: pgsql-sbs [-h] [-d DB] [-u USER] [-p PASSWORD] [--host HOST] [--port PORT] [--debug] [-v] [-f FILE | -s SQL]
options:
-h, --help show this help message and exit
-d DB, --db DB database name
-u USER, --user USER database user
-p PASSWORD, --password PASSWORD
database password
--host HOST database host
--port PORT database port
-v, --verbose verbose mode
-f FILE, --file FILE sql file
-s SQL, --sql SQL sql string
```
Par exemple :
```
pgsql-sbs -s 'select * from etudiants join notes using(noetu);'
==================================================================================================
select * FROM #etudiants# JOIN notes USING (noetu) ;
┌─────────────────┬───────────────┬──────────────────┐
│ etudiants.noetu ┆ etudiants.nom ┆ etudiants.prenom │
╞═════════════════╪═══════════════╪══════════════════╡
│ 28936E ┆ Dupont ┆ Franck │
│ 46283B ┆ Dupont ┆ Isabelle │
│ 86719E ┆ Martin ┆ Adrien │
│ 99628C ┆ Robert ┆ Adrien │
│ 99321C ┆ Denou ┆ Michelle │
│ 99322C ┆ Dupont ┆ Isabelle │
└─────────────────┴───────────────┴──────────────────┘
==================================================================================================
select * FROM etudiants JOIN #notes# USING (noetu) ;
┌─────────────┬───────────────┬──────────────┬──────────────┐
│ notes.noetu ┆ notes.codemat ┆ notes.noteex ┆ notes.notecc │
╞═════════════╪═══════════════╪══════════════╪══════════════╡
│ 99628C ┆ MIAS2I5 ┆ 12.0 ┆ 15.5 │
│ 46283B ┆ MIAS2I5 ┆ 9.5 ┆ 2.0 │
│ 86719E ┆ IUP2MA ┆ 12.0 ┆ 5.5 │
│ 99321C ┆ LIL6 ┆ 18.0 ┆ 16.5 │
│ 28936E ┆ MIAS2I5 ┆ 13.5 ┆ 13.5 │
│ 86719E ┆ IUP2IS ┆ 8.5 ┆ 10.0 │
│ 99321C ┆ LIL5 ┆ 15.0 ┆ 14.5 │
│ 99322C ┆ MIAS2I5 ┆ 12.0 ┆ 15.5 │
│ 46283B ┆ MIAS2I6 ┆ 8.0 ┆ 12.0 │
│ 99628C ┆ MIAS2I6 ┆ 3.0 ┆ 7.0 │
│ 28936E ┆ MIAS2I6 ┆ 12.0 ┆ null │
└─────────────┴───────────────┴──────────────┴──────────────┘
==================================================================================================
select * FROM #etudiants JOIN notes USING (noetu)# ;
┌─────────────────┬───────────────┬──────────────────┬───────────────┬──────────────┬──────────────┐
│ etudiants.noetu ┆ etudiants.nom ┆ etudiants.prenom ┆ notes.codemat ┆ notes.noteex ┆ notes.notecc │
╞═════════════════╪═══════════════╪══════════════════╪═══════════════╪══════════════╪══════════════╡
│ 99628C ┆ Robert ┆ Adrien ┆ MIAS2I5 ┆ 12.0 ┆ 15.5 │
│ 46283B ┆ Dupont ┆ Isabelle ┆ MIAS2I5 ┆ 9.5 ┆ 2.0 │
│ 86719E ┆ Martin ┆ Adrien ┆ IUP2MA ┆ 12.0 ┆ 5.5 │
│ 99321C ┆ Denou ┆ Michelle ┆ LIL6 ┆ 18.0 ┆ 16.5 │
│ 28936E ┆ Dupont ┆ Franck ┆ MIAS2I5 ┆ 13.5 ┆ 13.5 │
│ 86719E ┆ Martin ┆ Adrien ┆ IUP2IS ┆ 8.5 ┆ 10.0 │
│ 99321C ┆ Denou ┆ Michelle ┆ LIL5 ┆ 15.0 ┆ 14.5 │
│ 99322C ┆ Dupont ┆ Isabelle ┆ MIAS2I5 ┆ 12.0 ┆ 15.5 │
│ 46283B ┆ Dupont ┆ Isabelle ┆ MIAS2I6 ┆ 8.0 ┆ 12.0 │
│ 99628C ┆ Robert ┆ Adrien ┆ MIAS2I6 ┆ 3.0 ┆ 7.0 │
│ 28936E ┆ Dupont ┆ Franck ┆ MIAS2I6 ┆ 12.0 ┆ null │
└─────────────────┴───────────────┴──────────────────┴───────────────┴──────────────┴──────────────┘
==================================================================================================
select #* FROM etudiants JOIN notes USING (noetu)# ;
┌─────────────────┬───────────────┬──────────────────┬───────────────┬──────────────┬──────────────┐
│ etudiants.noetu ┆ etudiants.nom ┆ etudiants.prenom ┆ notes.codemat ┆ notes.noteex ┆ notes.notecc │
╞═════════════════╪═══════════════╪══════════════════╪═══════════════╪══════════════╪══════════════╡
│ 99628C ┆ Robert ┆ Adrien ┆ MIAS2I5 ┆ 12.0 ┆ 15.5 │
│ 46283B ┆ Dupont ┆ Isabelle ┆ MIAS2I5 ┆ 9.5 ┆ 2.0 │
│ 86719E ┆ Martin ┆ Adrien ┆ IUP2MA ┆ 12.0 ┆ 5.5 │
│ 99321C ┆ Denou ┆ Michelle ┆ LIL6 ┆ 18.0 ┆ 16.5 │
│ 28936E ┆ Dupont ┆ Franck ┆ MIAS2I5 ┆ 13.5 ┆ 13.5 │
│ 86719E ┆ Martin ┆ Adrien ┆ IUP2IS ┆ 8.5 ┆ 10.0 │
│ 99321C ┆ Denou ┆ Michelle ┆ LIL5 ┆ 15.0 ┆ 14.5 │
│ 99322C ┆ Dupont ┆ Isabelle ┆ MIAS2I5 ┆ 12.0 ┆ 15.5 │
│ 46283B ┆ Dupont ┆ Isabelle ┆ MIAS2I6 ┆ 8.0 ┆ 12.0 │
│ 99628C ┆ Robert ┆ Adrien ┆ MIAS2I6 ┆ 3.0 ┆ 7.0 │
│ 28936E ┆ Dupont ┆ Franck ┆ MIAS2I6 ┆ 12.0 ┆ null │
└─────────────────┴───────────────┴──────────────────┴───────────────┴──────────────┴──────────────┘
```
Il est aussi possible d'utiliser MySQL :
```
usage: mysql-sbs [-h] [-d DB] [-u USER] [-p PASSWORD] [--host HOST] [--port PORT] [--debug] [-v] [-f FILE | -s SQL]
options:
-h, --help show this help message and exit
-d DB, --db DB database name
-u USER, --user USER database user
-p PASSWORD, --password PASSWORD
database password
--host HOST database host
--port PORT database port
-v, --verbose verbose mode
-f FILE, --file FILE sql file
-s SQL, --sql SQL sql string
```
ou SQLite :
```
usage: sqlite-sbs [-h] [-d DB] [--debug] [-v] [-f FILE | -s SQL]
options:
-h, --help show this help message and exit
-d DB, --db DB database name
-v, --verbose verbose mode
-f FILE, --file FILE sql file
-s SQL, --sql SQL sql string
```
## LRS
L'outil peut être interfacé avec un LRS compatible XAPI (testé avec Veracity ; https://lrs.io/home ; https://lrs.io/home/download).
Il suffit de spécifier les paramètres de connection à travers les paramètres "--lrs-*".
L'activation elle-même est donnée par le paramètre "--lrs".
## Article de recherche
- Emmanuel Desmontils, Laura Monceaux. **Enseigner SQL en NSI**. Atelier « Apprendre la Pensée Informatique de la Maternelle à l'Université », dans le cadre de la conférence Environnements Informatiques pour l'Apprentissage Humain (EIAH), Jun 2023, Brest, France. pp.17-24. https://hal.science/hal-04144210
https://apimu.gitlabpages.inria.fr/site/ateliers/pdf-apimu23/APIMUEIAH_2023_paper_3.pdf
## Génération de la documentation
```shell
pdoc3 --html --force -o doc querycraft
```
## Remerciements
- Wiktoria SLIWINSKA, étudiante ERASMUS en licence Informatique à l'Université de Nantes en 2023-2024, pour son aide à la conception du POC initial.
## Licence
(C) E. Desmontils, Nantes Université, 2024
Ce logiciel est distribué sous licence GPLv3.
Raw data
{
"_id": null,
"home_page": "https://gitlab.univ-nantes.fr/ls2n-didactique/querycraft",
"name": "querycraft",
"maintainer": "Emmanuel Desmontils",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "emmanuel.desmontils@univ-nantes.fr",
"keywords": "SQL Step-By-Step Query Database",
"author": "Emmanuel Desmontils",
"author_email": "emmanuel.desmontils@univ-nantes.fr",
"download_url": "https://files.pythonhosted.org/packages/40/b6/50b1f3256e9fa474487afb646b603c0c845dc1ff7ebd6ddf6587df72bb45/querycraft-0.0.37.tar.gz",
"platform": "ALL",
"description": "# QueryCraft\n\n[TOC]\n\n\n## Le nom ?\n\nUn nom en anglais qui \u00e9voque l'id\u00e9e de \"fa\u00e7onner\" ou \"construire\" des requ\u00eates SQL de mani\u00e8re intuitive, parfait pour une approche p\u00e9dagogique. (GPT 4o ;-) )\n\n## Objectifs\n\nL'objectif de cette biblioth\u00e8que est de proposer des classes Python permettant de manipuler des requ\u00eates SQL. \nElle propose aussi des applications pour d\u00e9composer l'ex\u00e9cution d'une requ\u00eate SQL sur une base de donn\u00e9es PostgreSQL, MySQL ou SQLite.\n\n## Fonctionnalit\u00e9s\n\n- **Analyse de requ\u00eates SQL** : Analysez et comprenez la structure de vos requ\u00eates SQL.\n- **D\u00e9composition de requ\u00eates** : D\u00e9composez vos requ\u00eates SQL en \u00e9tapes simples pour une meilleure compr\u00e9hension.\n- **Support multi-SGBD** : Compatible avec PostgreSQL, MySQL et SQLite.\n- **Interface en ligne de commande** : Utilisez l'application en ligne de commande pour analyser et d\u00e9composer vos requ\u00eates SQL.\n\n## Limitations\n\n- **Op\u00e9rateurs SQL non couverts** : Certains op\u00e9rateurs SQL avanc\u00e9s peuvent ne pas \u00eatre enti\u00e8rement pris en charge, en particulier les op\u00e9rateurs ensemblistes. \n Par exemple, les op\u00e9rateurs `INTERSECT`, `EXCEPT` et `UNION` ne sont pas pris en charge.\n Les sous-requ\u00eates dans le 'From' sont prises en charges, mais pas les sous-requ\u00eates dans le 'Where', le 'Having' et le 'Select' (pas de pas \u00e0 pas possible).\n- **Support limit\u00e9 des fonctions SQL** : Certaines fonctions SQL avanc\u00e9es peuvent ne pas \u00eatre enti\u00e8rement prises en charge.\n- **Compatibilit\u00e9 avec les versions de SGBD** : La compatibilit\u00e9 avec les versions sp\u00e9cifiques de PostgreSQL, MySQL et SQLite peut varier.\n\n\n## Installation \n\n```shell\ngit clone https://gitlab.univ-nantes.fr/ls2n-didactique/querycraft.git\ncd querycraft\npip install -e .\n```\n\nou\n\n```shell\npip install querycraft\n```\n\n## Usage\n\nApplication qui permet de d\u00e9composer l'ex\u00e9cution d'une requ\u00eate SQL sur une base de donn\u00e9es PostgreSQL.\n\n```\nusage: pgsql-sbs [-h] [-d DB] [-u USER] [-p PASSWORD] [--host HOST] [--port PORT] [--debug] [-v] [-f FILE | -s SQL]\n\noptions:\n -h, --help show this help message and exit\n -d DB, --db DB database name\n -u USER, --user USER database user\n -p PASSWORD, --password PASSWORD\n database password\n --host HOST database host\n --port PORT database port\n -v, --verbose verbose mode\n -f FILE, --file FILE sql file\n -s SQL, --sql SQL sql string\n```\n\nPar exemple :\n```\npgsql-sbs -s 'select * from etudiants join notes using(noetu);' \n\n==================================================================================================\nselect * FROM #etudiants# JOIN notes USING (noetu) ;\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 etudiants.noetu \u2506 etudiants.nom \u2506 etudiants.prenom \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 28936E \u2506 Dupont \u2506 Franck \u2502\n\u2502 46283B \u2506 Dupont \u2506 Isabelle \u2502\n\u2502 86719E \u2506 Martin \u2506 Adrien \u2502\n\u2502 99628C \u2506 Robert \u2506 Adrien \u2502\n\u2502 99321C \u2506 Denou \u2506 Michelle \u2502\n\u2502 99322C \u2506 Dupont \u2506 Isabelle \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n==================================================================================================\nselect * FROM etudiants JOIN #notes# USING (noetu) ;\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 notes.noetu \u2506 notes.codemat \u2506 notes.noteex \u2506 notes.notecc \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 99628C \u2506 MIAS2I5 \u2506 12.0 \u2506 15.5 \u2502\n\u2502 46283B \u2506 MIAS2I5 \u2506 9.5 \u2506 2.0 \u2502\n\u2502 86719E \u2506 IUP2MA \u2506 12.0 \u2506 5.5 \u2502\n\u2502 99321C \u2506 LIL6 \u2506 18.0 \u2506 16.5 \u2502\n\u2502 28936E \u2506 MIAS2I5 \u2506 13.5 \u2506 13.5 \u2502\n\u2502 86719E \u2506 IUP2IS \u2506 8.5 \u2506 10.0 \u2502\n\u2502 99321C \u2506 LIL5 \u2506 15.0 \u2506 14.5 \u2502\n\u2502 99322C \u2506 MIAS2I5 \u2506 12.0 \u2506 15.5 \u2502\n\u2502 46283B \u2506 MIAS2I6 \u2506 8.0 \u2506 12.0 \u2502\n\u2502 99628C \u2506 MIAS2I6 \u2506 3.0 \u2506 7.0 \u2502\n\u2502 28936E \u2506 MIAS2I6 \u2506 12.0 \u2506 null \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n==================================================================================================\nselect * FROM #etudiants JOIN notes USING (noetu)# ;\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 etudiants.noetu \u2506 etudiants.nom \u2506 etudiants.prenom \u2506 notes.codemat \u2506 notes.noteex \u2506 notes.notecc \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 99628C \u2506 Robert \u2506 Adrien \u2506 MIAS2I5 \u2506 12.0 \u2506 15.5 \u2502\n\u2502 46283B \u2506 Dupont \u2506 Isabelle \u2506 MIAS2I5 \u2506 9.5 \u2506 2.0 \u2502\n\u2502 86719E \u2506 Martin \u2506 Adrien \u2506 IUP2MA \u2506 12.0 \u2506 5.5 \u2502\n\u2502 99321C \u2506 Denou \u2506 Michelle \u2506 LIL6 \u2506 18.0 \u2506 16.5 \u2502\n\u2502 28936E \u2506 Dupont \u2506 Franck \u2506 MIAS2I5 \u2506 13.5 \u2506 13.5 \u2502\n\u2502 86719E \u2506 Martin \u2506 Adrien \u2506 IUP2IS \u2506 8.5 \u2506 10.0 \u2502\n\u2502 99321C \u2506 Denou \u2506 Michelle \u2506 LIL5 \u2506 15.0 \u2506 14.5 \u2502\n\u2502 99322C \u2506 Dupont \u2506 Isabelle \u2506 MIAS2I5 \u2506 12.0 \u2506 15.5 \u2502\n\u2502 46283B \u2506 Dupont \u2506 Isabelle \u2506 MIAS2I6 \u2506 8.0 \u2506 12.0 \u2502\n\u2502 99628C \u2506 Robert \u2506 Adrien \u2506 MIAS2I6 \u2506 3.0 \u2506 7.0 \u2502\n\u2502 28936E \u2506 Dupont \u2506 Franck \u2506 MIAS2I6 \u2506 12.0 \u2506 null \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n==================================================================================================\nselect #* FROM etudiants JOIN notes USING (noetu)# ;\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 etudiants.noetu \u2506 etudiants.nom \u2506 etudiants.prenom \u2506 notes.codemat \u2506 notes.noteex \u2506 notes.notecc \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 99628C \u2506 Robert \u2506 Adrien \u2506 MIAS2I5 \u2506 12.0 \u2506 15.5 \u2502\n\u2502 46283B \u2506 Dupont \u2506 Isabelle \u2506 MIAS2I5 \u2506 9.5 \u2506 2.0 \u2502\n\u2502 86719E \u2506 Martin \u2506 Adrien \u2506 IUP2MA \u2506 12.0 \u2506 5.5 \u2502\n\u2502 99321C \u2506 Denou \u2506 Michelle \u2506 LIL6 \u2506 18.0 \u2506 16.5 \u2502\n\u2502 28936E \u2506 Dupont \u2506 Franck \u2506 MIAS2I5 \u2506 13.5 \u2506 13.5 \u2502\n\u2502 86719E \u2506 Martin \u2506 Adrien \u2506 IUP2IS \u2506 8.5 \u2506 10.0 \u2502\n\u2502 99321C \u2506 Denou \u2506 Michelle \u2506 LIL5 \u2506 15.0 \u2506 14.5 \u2502\n\u2502 99322C \u2506 Dupont \u2506 Isabelle \u2506 MIAS2I5 \u2506 12.0 \u2506 15.5 \u2502\n\u2502 46283B \u2506 Dupont \u2506 Isabelle \u2506 MIAS2I6 \u2506 8.0 \u2506 12.0 \u2502\n\u2502 99628C \u2506 Robert \u2506 Adrien \u2506 MIAS2I6 \u2506 3.0 \u2506 7.0 \u2502\n\u2502 28936E \u2506 Dupont \u2506 Franck \u2506 MIAS2I6 \u2506 12.0 \u2506 null \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\nIl est aussi possible d'utiliser MySQL :\n\n```\nusage: mysql-sbs [-h] [-d DB] [-u USER] [-p PASSWORD] [--host HOST] [--port PORT] [--debug] [-v] [-f FILE | -s SQL]\n\noptions:\n -h, --help show this help message and exit\n -d DB, --db DB database name\n -u USER, --user USER database user\n -p PASSWORD, --password PASSWORD\n database password\n --host HOST database host\n --port PORT database port\n -v, --verbose verbose mode\n -f FILE, --file FILE sql file\n -s SQL, --sql SQL sql string\n```\n\nou SQLite :\n\n```\nusage: sqlite-sbs [-h] [-d DB] [--debug] [-v] [-f FILE | -s SQL]\n\noptions:\n -h, --help show this help message and exit\n -d DB, --db DB database name\n -v, --verbose verbose mode\n -f FILE, --file FILE sql file\n -s SQL, --sql SQL sql string\n```\n\n## LRS\n\nL'outil peut \u00eatre interfac\u00e9 avec un LRS compatible XAPI (test\u00e9 avec Veracity ; https://lrs.io/home ; https://lrs.io/home/download). \nIl suffit de sp\u00e9cifier les param\u00e8tres de connection \u00e0 travers les param\u00e8tres \"--lrs-*\". \nL'activation elle-m\u00eame est donn\u00e9e par le param\u00e8tre \"--lrs\".\n\n## Article de recherche\n\n- Emmanuel Desmontils, Laura Monceaux. **Enseigner SQL en NSI**. Atelier \u00ab Apprendre la Pens\u00e9e Informatique de la Maternelle \u00e0 l'Universit\u00e9 \u00bb, dans le cadre de la conf\u00e9rence Environnements Informatiques pour l'Apprentissage Humain (EIAH), Jun 2023, Brest, France. pp.17-24. https://hal.science/hal-04144210 \n https://apimu.gitlabpages.inria.fr/site/ateliers/pdf-apimu23/APIMUEIAH_2023_paper_3.pdf\n\n\n## G\u00e9n\u00e9ration de la documentation\n\n```shell\npdoc3 --html --force -o doc querycraft\n```\n\n## Remerciements\n\n- Wiktoria SLIWINSKA, \u00e9tudiante ERASMUS en licence Informatique \u00e0 l'Universit\u00e9 de Nantes en 2023-2024, pour son aide \u00e0 la conception du POC initial. \n\n## Licence\n\n(C) E. Desmontils, Nantes Universit\u00e9, 2024\n\nCe logiciel est distribu\u00e9 sous licence GPLv3.\n\n\n\n",
"bugtrack_url": null,
"license": "GPL V3",
"summary": "Provide usefully SQL classes and functions to execute SQL queries step by step",
"version": "0.0.37",
"project_urls": {
"Homepage": "https://gitlab.univ-nantes.fr/ls2n-didactique/querycraft"
},
"split_keywords": [
"sql",
"step-by-step",
"query",
"database"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3867d61c385b8da91acf4f515b834413a430d5b68361654f23828b12a7bf0ae1",
"md5": "d91e3feaf86e7da80ceb51c638169ed4",
"sha256": "0840c142f56e35da66c421773da4a4da64ef04e8db4f051cb28ff4adb04e435b"
},
"downloads": -1,
"filename": "querycraft-0.0.37-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d91e3feaf86e7da80ceb51c638169ed4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 30734,
"upload_time": "2024-12-07T10:15:06",
"upload_time_iso_8601": "2024-12-07T10:15:06.911344Z",
"url": "https://files.pythonhosted.org/packages/38/67/d61c385b8da91acf4f515b834413a430d5b68361654f23828b12a7bf0ae1/querycraft-0.0.37-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "40b650b1f3256e9fa474487afb646b603c0c845dc1ff7ebd6ddf6587df72bb45",
"md5": "e81a3857b25bd378da19b0b80329d05d",
"sha256": "b6621879a7562275c18babbaf3f5721b918f180f1690b5ec76abfd42a52a0853"
},
"downloads": -1,
"filename": "querycraft-0.0.37.tar.gz",
"has_sig": false,
"md5_digest": "e81a3857b25bd378da19b0b80329d05d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 35257,
"upload_time": "2024-12-07T10:15:08",
"upload_time_iso_8601": "2024-12-07T10:15:08.986203Z",
"url": "https://files.pythonhosted.org/packages/40/b6/50b1f3256e9fa474487afb646b603c0c845dc1ff7ebd6ddf6587df72bb45/querycraft-0.0.37.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-07 10:15:08",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "querycraft"
}