【发布时间】:2014-08-10 19:43:06
【问题描述】:
我正在尝试在 Postgres 中使用 FOR 循环来计算我的数据库中每个地理位置的(变量)范围内的数据平均值。我正在使用 python/psycopg2。代码如下:
query ='''
DECLARE geoids RECORD;
BEGIN
RAISE NOTICE 'Beginning average calculation';
FOR geoids IN select*from census_blocks
WHERE ST_contains((select geom from census_cbsa
WHERE cbsafp10='%s'),census_blocks.geom)
LOOP
INSERT INTO temp_avgs VALUES
(geoids,
select avg(select alljobs from accessibility_results
WHERE geoid=geoids
AND deptime BETWEEN '%s' and '%s'
AND threshold='%s')
END LOOP;
END;
'''
我收到的错误是
psycopg2.ProgrammingError: syntax error at or near "RECORD"
LINE 2: DECLARE geoids RECORD;
如果我删除此DECLARE 语句(因为我相信选择值上的LOOP 变量会自动声明为RECORD),错误变为:
psycopg2.ProgrammingError: syntax error at or near "RAISE"
LINE 4: RAISE NOTICE 'Beginning average calculation';
我应该如何正确格式化这个查询?
【问题讨论】:
标签: python sql postgresql plpgsql psycopg2