问题描述
我有一个数据框 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 列)。