<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif;font-size:small">Gerard,</div><div class="gmail_default" style="font-family:georgia,serif;font-size:small">You need to open your data source in update mode.<br>
<font face="monospace">ds = ogr.Open("PG:dbname='db' user='user'", update=1)</font>

</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 25, 2019 at 10:58 AM Gerard <<a href="mailto:gerardg@gmail.com">gerardg@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-size:small">Is it possible to add features to an existing PostGIS table using Python OGR/GDAL? I've tried these two approaches:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><font face="monospace"># Approach 1. Results in:</font></div><font face="monospace"># ERROR 1: Layer tracks already exists, CreateLayer failed.<br># Use the layer creation option OVERWRITE=YES to replace it.<br></font><div class="gmail_default" style="font-size:small"><font face="monospace">ds = ogr.Open("PG:dbname='db' user='user'")<br>srs = osr.SpatialReference()<br>srs.ImportFromEPSG(4326)</font></div><div class="gmail_default" style="font-size:small"><font face="monospace">layer = ds.CreateLayer('tracks', srs, ogr.wkbMultiLineString, ['OVERWRITE=NO'] )<br><br># Approach 2. Results in:<br># ERROR 1: Invalid index : -1<br># ERROR 6: CreateFeature : unsupported operation on a read-only datasource.<br>ds = ogr.Open("PG:dbname='db' user='user'")</font><br><font face="monospace">layer = ds.GetLayerByName('tracks')</font><br></div><div class="gmail_default" style="font-size:small"><font face="monospace"># set fields, etc.</font></div><div class="gmail_default" style="font-size:small"><font face="monospace">layer.CreateFeature(outFeature)</font><br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Think I could accomplish it via SQL statements and ds.ExecuteSQL(), and I've found examples using psycopg2 (or SQLAlchemy) instead. Just wondering if it's directly possible using Python OGR/GDAL.</div><div class="gmail_default" style="font-size:small"><br></div><div><div dir="ltr"><div dir="ltr">Thanks,<br>Gerard</div></div></div></div>
_______________________________________________<br>
gdal-dev mailing list<br>
<a href="mailto:gdal-dev@lists.osgeo.org" target="_blank">gdal-dev@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/gdal-dev" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/gdal-dev</a></blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><i><font face="georgia, serif" color="#999999">The right coordinate system can turn an impossible problem into two really hard problems. -- Charlie Pellerin</font></i><div><i><font color="#999999"><br></font></i><div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"><font color="#999999">Thomas Juntunen</font></span><div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"><font color="#999999">GIS Specialist</font></span></div><div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"><font color="#999999">Polar Geospatial Center<br>R280 Learning and Environmental Science<br>1954 Buford Ave<br>University of Minnesota<br>St. Paul, MN 55108<br><a>612-626-0505</a></font></span></div></div></div></div>