Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
python:sqlalchemy [2023/12/21 07:01] marclebrun |
python:sqlalchemy [2023/12/22 08:34] (Version actuelle) marclebrun [Configuration de la connexion] |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
* Firebird : [[https://docs.sqlalchemy.org/en/20/dialects/firebird.html]] | * Firebird : [[https://docs.sqlalchemy.org/en/20/dialects/firebird.html]] | ||
* Doc de SQLAlchemy-Firebird : [[https://pypi.org/project/sqlalchemy-firebird/]] | * Doc de SQLAlchemy-Firebird : [[https://pypi.org/project/sqlalchemy-firebird/]] | ||
- | |||
- | Selon [[https://docs.sqlalchemy.org/en/14/dialects/firebird.html]] | ||
- | le support interne de Firebird est déprécié, il faut désormais utiliser | ||
- | le dialecte externe (voir [[https://github.com/pauldex/sqlalchemy-firebird]]). | ||
===== Installation ===== | ===== Installation ===== | ||
Ligne 47: | Ligne 43: | ||
dbpath, | dbpath, | ||
fb_library_name | fb_library_name | ||
- | ) | + | )) |
+ | </code> | ||
+ | |||
+ | ===== Requêtes SQL ===== | ||
+ | |||
+ | Requête Select : | ||
+ | |||
+ | <code python> | ||
+ | from sqlalchemy import text | ||
+ | |||
+ | with engine.connect() as conn: | ||
+ | result = conn.execute(text("select id, nom from clients order by nom")) | ||
+ | |||
+ | # Afficher tous les résultats dans une liste de tuples : | ||
+ | print(result.all()) | ||
+ | |||
+ | # Parcourir le résultat et afficher les lignes individuellement : | ||
+ | for row in result: | ||
+ | print(f"{row.id} : {row.nom.strip()}") | ||
+ | </code> | ||
+ | |||
+ | Requêtes transactionnelles avec un **commit()** à la fin : | ||
+ | |||
+ | <code python> | ||
+ | from sqlalchemy import text | ||
+ | |||
+ | with engine.connect() as conn: | ||
+ | conn.execute(text("CREATE TABLE some_table (x int, y int)")) | ||
+ | conn.execute( | ||
+ | text("INSERT INTO some_table (x, y) VALUES (:x, :y)"), | ||
+ | [{"x": 1, "y": 1}, {"x": 2, "y": 4}], | ||
+ | ) | ||
+ | conn.commit() | ||
+ | </code> | ||
+ | |||
+ | Requêtes transactionnelles dans un bloc **begin()** (le commit se fait implicitement) : | ||
+ | |||
+ | <code python> | ||
+ | from sqlalchemy import text | ||
+ | |||
+ | with engine.begin() as conn: | ||
+ | conn.execute( | ||
+ | text("INSERT INTO some_table (x, y) VALUES (:x, :y)"), | ||
+ | [{"x": 1, "y": 1}, {"x": 2, "y": 4}], | ||
+ | ) | ||
</code> | </code> | ||