Como se mencionó anteriormente, la respuesta de @ Kartik funciona solo para una sola llamada, para agregar datos genera un DataError
desde la geom
la columna espera que la geometría tenga un SRID. Puedes usar GeoAlchemy
para manejar todos los casos:
# 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>)})