如何将点数据从python导入postreSQL数据库?

问题描述

我有一个数据框 df,其中有一列名为“geom”。它由经度、纬度坐标组成:

例如POINT (10.1768627166748 50.1768627166748)

我尝试使用以下命令将此单列数据导入到我在 postresql 中的数据库的相应列中。

from geoalchemy2 import Geometry
df['geom'].to_sql("...",engine,schema='...',if_exists='append',index=False,dtype={'geom': Geometry(geometry_type='POINT',srid=4326)})

但是,我收到此错误

IntegrityError: (psycopg2.errors.NotNullViolation) null value in column "id" violates not-null constraint

请注意,id数据库的主键。有任何想法吗?提前致谢。

解决方法

您需要向数据框添加一个“id”列并为其指定一个唯一值,目前您正在尝试将 null 插入到 pk 字段中:

# add column
df['id'] = 1234 
# Observe the result 
df
# insert entire df (not just geom column)
df.to_sql("...",engin ...

确保插入整个数据框(不仅仅是 geom 列)。