使用SQLAlchemy解压缩PostGISPostgreSQL记录

使用SQLAlchemy解压缩PostGISPostgreSQL记录,第1张

概述如何使用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;

这里,ST_SummaryStats是一个PostGIS函数,它返回我想要解压缩的记录. tiles是一个带有文件名和rast(栅格)列的PostGIS表.我的尝试如下:

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,maxFROM 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);
总结

以上是内存溢出为你收集整理的使用SQLAlchemy解压缩PostGIS / PostgreSQL记录全部内容,希望文章能够帮你解决使用SQLAlchemy解压缩PostGIS / PostgreSQL记录所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1162568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存