使用SQLAlchemy解压缩PostGIS / PostgreSQL记录
发布时间:2020-12-13 16:07:18 所属栏目:百科 来源:网络整理
导读:如何使用SQLAlchemy的ORM编写以下查询? SELECT filename,(stats).*FROM ( SELECT filename,ST_SummaryStats(rast,1,TRUE) AS stats FROM tiles) AS stats_table; 这里, ST_SummaryStats 是一个PostGIS函数,它返回我想要解压缩的记录. tiles是一个带有文件名
如何使用SQLAlchemy的ORM编写以下查询?
SELECT filename,(stats).* FROM ( SELECT filename,ST_SummaryStats(rast,1,TRUE) AS stats FROM tiles ) AS stats_table; 这里, sub_q = db_session.query( Tiles.filename,func.ST_SummaryStats(Tiles.rast,True).label('stats'),).subquery() q = db_session.query( sub_q.columns.filename,sub_q.columns.stats,) 但是,我不知道如何使用SQLAlchemy的ORM编写(stats).*表达式 – 因此解压缩记录.因此,统计数据似乎是一个元组. 在此先感谢您的帮助. 解决方法
ST_SummaryStats()返回一条记录,因此不要将它用作SELECT表达式(它将返回记录),而是将其用作FROM子句并在SELECT级别选择所需的统计信息,因此它变得非常简单:
SELECT filename,count,sum,mean,stddev,min,max FROM tiles,ST_SummaryStats(tiles.rast,true); 这会产生一个所谓的LATERAL JOIN,因为ST_SummaryStats()只为tile中指示的栅格返回一行,所以不需要连接条件,过滤器或其他任何东西. 我不确定SQLAlchemy是否能够将函数的结果用作类,但是使这项工作成为可靠的方法是将上面的SELECT包装到VIEW中,然后从SQLAlchemy访问该视图: CREATE VIEW raster_stats AS SELECT filename,max FROM tiles,true); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |