{{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
===== 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
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
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... ).
Généralement pour un fichier script l’entête comprend également le chemin de l’interpréteur à appe
é 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... ntenu des placeholders pour produire une page web complète pouvant être retournée au client.
<note>
Pa
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
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é
- 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
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://
{{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
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
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
lisés, alors on veut les supprimer également.
Ce comportement de suppression des enregistrements orphe... **SQLAlchemy-Utils** permet de mettre en œuvre se comportement via sa fonction **auto_delete_orphans**.... Références =====
* [[https://www.digitalocean.com/community/tutorials/how-to-use-many-to-many-database-relationships-with-flask-sqlalchemy|Comment utili
db.session.add(self)
db.session.commit()
product.shop_id = self.id
db.session.add(product)
db.session.commit()
class Product(db.Model):
__tablename__... __name__ pour définir le nom du module courant
# comme root applicatif pour notre application flask
ap... roducts'' **ne retourne plus directement la liste complète** de tous les produits désignés par la relat