Geographic Information Systems Asked on November 1, 2021
I’ve got Python code on QGIS 3.12 that adds a MS SQL Server data layer to the map, but I need to add all of them.
uri = QgsDataSourceUri()
uri.setConnection(r"xx.xxx.xxx.xxxxx", "xxxx", "xxx", "xxxx", "xxxx")
uri.setDataSource("000001","lcentro", "geom","")
uri.setSrid('31982')
vlayer = QgsVectorLayer(uri.uri(),"Roads","mssql")
QgsProject.instance().addMapLayer(vlayer)
So I can’t figure out how to do it for all the geometry tables.
In order to make your code generalizable, you can code as follows:
from PyQt4.QtSql import * #for QGIS 3.x use instead PyQt5.QtSql
db = QSqlDatabase.addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("postgres");
db.setUserName("postgres");
db.setPassword("postgres");
db.open();
names=db.tables( QSql.Tables)
print names
Answered by Santfloyd on November 1, 2021
After some tries, I got it this way.
#table array
tabelas = (['quadras','lotes','edif','rdatrech','rdaramal'])
#setting conections to DB
dados = QgsDataSourceUri()
dados.setConnection(r"xxxxxx", "1433", "xxx", "user_xxx", "xxxxxx")
#search shapes on tables
for shape in tabelas:
dados.setDataSource("your_db",shape, "geom","")
vector_layer = QgsVectorLayer(dados.uri(),"your_db","mssql")
#add to map
QgsProject.instance().addMapLayer(vector_layer)
Answered by Flavio Felix on November 1, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP