{{tag>dev python flask cli commande}}
====== Flask : Définir une commande CLI ======
Le framework Flask s'appuie sur le paquetage Python [[https://click.palletsprojects.com/en/stable/|Click]] pour la gestion de la ligne de commande.
On utilise les décorateurs pour déclarer u
le()
'Hello World!'
</code>
''count'' permet de compter les occurrences d'un caractère ou d'une sous-... ale.
On peut tester spécifiquement si une chaîne commence ou termine par une autre avec les méthodes '... t un booléen.
Pour des recherches de motifs plus complexes au sein de chaînes de caractères se reporte... utiliser l'opérateur d'indexation ''[]''. L'index commence à zéro et peut être négatif pour parcourir l
===== Initialisation de Flask-Migrate =====
Les commandes proposées par l'extension Flask-Migrate sont regroupées sous ''flask db''. On commence par initialiser l’environnement nécessaire à... migrate -m "Initial DB Model Product"
</code>
La commande retourne quelques messages de la forme :
<fi... on-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added table 'products'
Generating
é par l'application à l'exécution pour obtenir un comportement dynamique.
**Flask** s'appuie sur le mo... %'' Code Python à interpréter ;
* ''%%{# #}%%'' Commentaires.
<code html [highlight_lines_extra="8... ody>
{# Affiche le contenu de la variable msg comme titre #}
<h1>{{ msg }}</h1>
<h2>Welcome to FlaskApp!</h2>
</body>
</html>
</code>
===== R
ython a été conçu avec l'objectif d'être lisible, compréhensible faciitant son accès et les échanges de... est permissive et permet de l'utiliser à des fins commerciales.
===== Évolution du langage =====
Tout... tie en 1994. Version 2 en 2000. Grosse rupture de compatibilité entre la version 2 et la version 3. Lan... est interpréteur proposant des couleurs, de l'autocomplétion, une documentation en ligne. Il offre un m
tifier certains choix.
Souvent on pense à Sphinx comme à un outil de génération de documentation techn... ML.
* Sphinx propose d'autres types de sorties comme PDF, ePub, man etc.
* Sphinx a besoin d'un fi... figuration (conf.py)
* Sphinx est modulaire, il comporte de nombreuses extensions facilement activabl... 'une arborescence spécifique pour fonctionner. La commande ''sphinx-quickstart'' est interactive et se
- Un module écrit en C et chargé dynamiquement comme le module ''re'' (expressions rationnelles);
- Un module **built-in**, (intégré au langage) comme ''itertools''.
Quel que soit son type, le cont... ant du code Python.
<code python mod.py>
s = "If Comrade Napoleon says it, it must be right."
a = [100... '
<code python>
from mod import s, foo
>>> s
'If Comrade Napoleon says it, it must be right.'
>>> foo
al.html|adjacency list pattern]]) qui se présente comme une table se référençant elle même (ici via la ... ''parent_id''.
Lorsqu'on teste cet objet via la commande **flask shell** on constate que la contraint... Depuis flask shell
>>> db.create_all()
>>> # Ce comportement est correct
>>> rc = Category("root")
>>... -B") )
>>>
>>> db.session.add(rc)
>>> db.session.commit()
>>>
>>> del rc
>>>
>>> # On récupère la caté
: Démarrer l'application depuis la CLI ======
La commande **flask** permet notamment d'exécuter l'appl... dans le contexte de l'application.
Par défaut la commande tente d'importer un module ou un paquetage n... nt pas ces noms par défaut, on devra fournir à la commande flask le moyen de lancer correctement l'appl... cation via l'option ''%%--app%%''.
Dans sa forme complète, la valeur de l'option %%--app%% contient 3
{{tag>dev python command sysadmin}}
===== Python: Invoquer une commande ======
Pour invoquer une commande depuis un script, si les valeurs retournées sur stdout et stde... imple:
<code python>
from os import system as run_command
# La commande a exécuter
cmd=r'whereis snmpg
oduire le même résultat :
- https://www.example.com/script?action=33257
- https://www.example.com/create/user
Dans le second cas, on peut directement comprendre le sens de l'action à la lecture de l'URL.... type **GET**. Pour qu'une route puisse prendre en compte d'autres types de méthodes HTTP (ou [[https://
able de configuration ''SQLALCHEMY_DATABASE_URI'' comme indiqué ci-dessous :
<code python>
# Pour util... susceptible de lever une exception
db.session.commit()
except (IntegrityError, OperationalErro... ===
* https://flask-sqlalchemy.palletsprojects.com/en/stable/
* https://docs.sqlalchemy.org/en/20/... rg/flask-sqlalchemy/
* https://www.slingacademy.com/article/solving-sqlalchemy-integrityerror-when-in
DOCUPDATE:
====== Flask-SQLAlchemy : relation de composition ======
La relation de composition est une forme particulière de [[dev:python:flask:flask-sqla... ion one-to-many]]. Le diagramme UML la représente comme ci-dessous :
{{mcd_relation_composition.png}}
* Une voiture (le composite) peut contenir un ou p
ent à la lisibilité et la documentation du code.
Comme pour les commentaires, la recommandation de longueur de ligne d'une docstring est de 72 caractères.
* class docs... entation d'un niveau
*
Le formatage général recommandé d'une docstring comprend:
* La description
pip =====
Si des erreurs sont retournées par les commandes pip, il est possible de le remettre à jour:... un paquet =====
<code bash>
$ pip search docker-compose
</code>
===== Installer un paquet =====
<co... ottle
</code>
===== Générer un bundle =====
La commande freeze permet de lister toutes les bibliothèques et leur version, la sortie de la commande peut être redirigée dans un fichier puis réu