如何将GeoDataFrame导入MySQL?
我有一个具有以下结构的GeoDataFrame:
<class 'geopandas.geodataframe.GeoDataFrame'>
RangeIndex: 28 entries, 0 to 27
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 28 non-null object
1 Description 28 non-null object
2 geometry 28 non-null geometry
dtypes: geometry(1), object(2)
memory usage: 800.0+ bytes
这里有一张我的df是什么样子的图片:
我正在尝试使用gdf.to_sql将其保存在MySQL数据库中,并且我的连接使用的是SQLAlChemy,但收到以下错误:AttributeError:‘GeometryDtype’对象没有属性‘base’。
我一直在四处寻找,发现它solution,但我找不到正确的语法使其适用于MySQL。
mysql
尝试了很多方法之后,我注意到推荐答案函数没有生成正确的mysql语法使其正常工作。同样,对于更改为WKB的方法,如果我保留文本原样(请参见问题中的图片),MySQL仍然无法将该列识别为几何图形。
对我起作用的是将几何字段更改为字符串,并在python中更新它,使其看起来如下所示:
之后,我继续使用下面的代码,其中我将数据帧发送到MySQL,然后更新表以设置几何列:
regions.to_sql('pr_regions', con=conn, schema='eq_pr_db',
if_exists='replace', index=False)
#add column type Polygon
conn.execute('''ALTER TABLE `eq_pr_db`.`pr_regions`
ADD COLUMN `geom` Polygon;''')
#populate new column by applying the ST_GeomFromText function to transform the string to geometry type.
conn.execute('''UPDATE `eq_pr_db`.`pr_regions`
SET geom = ST_GeomFromText(geometry) ;''')
相关文章