Créer une table Qgis depuis un script python
Bonsoir à tous
Je suis novice en python
je souhaite simplement transvaser sur Qgis un résultat récupéré depuis une requête Postgresql
le résultat doit être une table Qgis
Pour cela je voudrais écrire un script python
Après l'import des différents modules
je passe d'abord par une connexion à une base de données Postgresql
puis je créer une couche vecteur
le but ensuite est de transvaser le résultat de la requête Sql
vers une liste puis vers la couche Qgis
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
import psycopg2
import psycopg2.extras
import os
from qgis.core import *
from qgis.utils import iface
from PyQt4.QtCore import*
import processing
Host = serveur
DBname = bdd
schema = Schema
User = login
Password = mot_de_passe
Folder=Dossier
conn_string = "host='"+Host+"' dbname='"+DBname+"' user='"+User+"' password='"+Password+"'"
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
uri1='None'
EtiQuet = QgsVectorLayer(uri1,"EtiQuet","memory")
pr = EtiQuet.dataProvider()
EtiQuet.startEditing()
pr.addAttributes([QgsField("section",QVariant.String),QgsField("code_cb",QVariant.String),QgsField("capacite",QVariant.Int),QgsField("nb_etiq",QVariant.Int) ])
requete1 ="SELECT * FROM pm996.cb"
cursor.execute(requete1)
resultats = cursor.fetchall()
valeurs = []
valeurs.append(resultats)
i=0
for i in range (0,len(valeurs)):
feat=QgsFeature()
feat.setAttributes([valeurs[i][0],valeurs[i][1],valeurs[i][2],valeurs[i][3]])
pr.addFeatures([feat])
EtiQuet.commitChanges()
i=i+1
layer_sp=QgsMapLayerRegistry.instance().addMapLayer(EtiQuet)
QgsVectorFileWriter.writeAsVectorFormat(layer_sp, Folder+ '\\'+schema+'.xlsx', 'utf8', None, 'XLSX')
conn.commit()
cursor.close()
conn.close() |
merci de votre aide
Cd