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:example@sqldat.com: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>)})