3liz / qgis-gestion_base_adresse-plugin

Extension QGIS de gestion d'une base adresse française
https://docs.3liz.org/qgis-gestion_base_adresse-plugin/
4 stars 4 forks source link

Postgis - use the new QGIS Database API #66

Closed Gustry closed 3 years ago

Gustry commented 4 years ago

Description

Easier to start by this plugin than https://github.com/3liz/qgis-lizsync-plugin/pull/19

rldhont commented 3 years ago

Ready ?

pdrillin commented 3 years ago

@rldhont une petite modif à apporter sur l'algo data_parcelle.py

Gustry commented 3 years ago

Chose que l'on vient de découvrir avec @mdouchin, il faut toujours faire un "rollback" quand on a un exception de QGIS sur la requête SQL.

Il faut donc toujours faire :

        try:
            connection.executeSql(sql)
        except QgsProviderConnectionException as error:
            connection.executeSql("ROLLBACK;")

Il faudra modifier les autres extensions au fur et à mesure.

pdrillin commented 3 years ago

Avec QGIS 3.10 et + J'ai un problème quand j'utilise le script de création de la structure de la base de données en ajoutant les données de tests. il ne reconnait pas les fonctions postgis (Ex d'erreur: la fonction st_intersects(public.geometry, public.geometry) n'existe pas). Si je passe les tests en QGIS 3.10 ca bloque aussi et cela viens de la même raison, par contre avec QGIS 3.4 ça fonctionne. Si je créer la structure sans les données de tests pas d'erreur et si je mets les données de tests à la main via pgadmin pas de problème non plus. Je cherche une solution.

Gustry commented 3 years ago

il ne reconnait pas les fonctions postgis (Ex d'erreur: la fonction st_intersects(public.geometry, public.geometry)

C'est à cause des set_search_path. Il faut les supprimer : https://github.com/3liz/qgis-gestion_base_adresse-plugin/search?q=search_path

Il faut donc mettre à jour le fichier d'export avec celui de PgMetadata : https://github.com/3liz/qgis-pgmetadata-plugin/blob/master/pg_metadata/install/sql/export_database_structure_to_SQL.sh avec l'ensemble des sed -i.

Idem dans les données de tests.

pdrillin commented 3 years ago

A d'accord @Gustry merci je fais ca et normalement je peux push tout :)

pdrillin commented 3 years ago

@gustry can you review ?

Gustry commented 3 years ago

Related to https://github.com/3liz/qgis-gestion_base_adresse-plugin/pull/66#issuecomment-884285281 I think the next step would be to make the migration to always have "BEGIN" and "COMMIT" in each file. So we are sure about the state of the database if it fails.

Like in veloroute, if you can do that in the next PR ? There is also a test to check these transactions.

Otherwise, LGTM for me. I can't approve my own PR ;-)

rldhont commented 3 years ago

Is it still a draft ?

pdrillin commented 3 years ago

@rldhont ready for review