I am trying to import GeoJSON file with Python to my PostgreSQL db.
Here is full code:
with open('C:/xampp/htdocs/app/data/'+a) as file:
gj=geojson.load(file)
for feature in gj['features']:
geom=feature['geometry']
kc_broj=feature['properties']['BROJ_KC']
ko_broj=feature['properties']['KO']
ko_naziv=feature['properties']['K.O.']
jls='RUGVICA1'
id=str(ko_broj)+'_'+kc_broj
cur.execute('INSERT INTO dkp (id,geom,ko_broj,kc_broj,ko_naziv,jls) VALUES (%s, ST_GeomFromText(ST_AsText(ST_GeomFromGeoJSON(%s))), %s, %s, %s, %s)', (id, geom ,ko_broj, kc_broj, ko_naziv, jls,))
And I get error :
psycopg2.ProgrammingError: can't adapt type 'Polygon'
Does anyone know how to fix this?
-
In the insert command some apostrophes missing. Print your Insert command from Python and try to execute in psql or pgadmin.Zoltan– Zoltan2019年02月03日 13:38:19 +00:00Commented Feb 3, 2019 at 13:38
-
@Zoltan can you underline where apostrophes are missing because when I copy this command into sql command window it works fineGoran– Goran2019年02月03日 14:04:33 +00:00Commented Feb 3, 2019 at 14:04
-
If it works from the SQL prompt then my assumption was false.Zoltan– Zoltan2019年02月03日 14:26:43 +00:00Commented Feb 3, 2019 at 14:26
1 Answer 1
Insert statement seems OK. But you could try to replace this line:
geom=feature['geometry']
with
geom = (json.dumps(feature['geometry']))))
Because feature['geometry'] is an object and you should convert it to json.
And in insert statement you should set SRID for geometry if you have constraint in PostGIS. Like this:
ST_SetSRID(ST_GeomFromGeoJSON(%s), 4326)