Như đã đề cập trước đây, câu trả lời của @ Kartik chỉ hoạt động cho một lệnh gọi duy nhất, đối với việc bổ sung dữ liệu, nó tạo ra DataError
kể từ geom
sau đó, mong đợi hình dạng có SRID. Bạn có thể sử dụng GeoAlchemy
để xử lý tất cả các trường hợp:
# Imports
from geoalchemy2 import Geometry, WKTElement
from sqlalchemy import *
# Use GeoAlchemy's WKTElement to create a geom with SRID
def create_wkt_element(geom):
return WKTElement(geom.wkt, srid = <your_SRID>)
geodataframe['geom'] = geodataframe['geom'].apply(create_wkt_element)
db_url = 'postgresql://username:[email protected]:socket/database'
engine = create_engine(db_url, echo=False)
# Use 'dtype' to specify column's type
# For the geom column, we will use GeoAlchemy's type 'Geometry'
your_geodataframe.to_sql(table_name, engine, if_exists='append', index=False,
dtype={'geom': Geometry('POINT', srid= <your_srid>)})