[Qgis-user] Doubt with qgis_projects table
Jürgen E. Fischer
jef at norbit.de
Sun Feb 12 11:09:09 PST 2023
Hi Jorge,
On Sun, 12. Feb 2023 at 17:18:20 +0000, Jorge Lopez via QGIS-User wrote:
> What I presume is that I need the way that column was generated, Martin
> Dobias created this in the core qgis and maybe he can provide some light on
> this.
The content column contains the qgz file. To decode and update it you could do
something like this:
from PyQt5.QtCore import QByteArray
from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSql
from io import BytesIO
from zipfile import ZipFile, ZIP_DEFLATED
db = QSqlDatabase.addDatabase("QPSQL")
db.setConnectOptions("service=…")
db.open()
q = QSqlQuery(db)
q.exec_("SELECT content,metadata,name FROM qgis_projects WHERE name='project-name'")
q.next()
inzip = BytesIO(q.value(0))
outzip = BytesIO()
metadata = q.value(1)
name = q.value(2)
iz = ZipFile(inzip)
oz = ZipFile(outzip, mode='w', compression=ZIP_DEFLATED)
for m in iz.namelist():
data = iz.read(m)
if m.endswith(".qgs"):
data = data.decode('UTF-8')
# modify projects XML in data
oz.writestr(m, data.encode("UTF-8"))
else:
oz.writestr(m, data)
oz.close()
q.prepare("UPDATE qgis_projects SET content=:content,metadata=:metadata WHERE name=:name")
v = QByteArray(outzip.getvalue())
q.bindValue(":content", v, QSql.In | QSql.Binary)
q.bindValue(":metadata", metadata)
q.bindValue(":name", name)
q.exec_()
Jürgen
--
Jürgen E. Fischer norBIT GmbH Tel. +49-4931-918175-31
Dipl.-Inf. (FH) Rheinstraße 13 Fax. +49-4931-918175-50
Software Engineer D-26506 Norden https://www.norbit.de
QGIS release manager (PSC) Germany IRC: jef on Libera|OFTC
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20230212/28182ea0/attachment.sig>
More information about the QGIS-User
mailing list