在我的應用程序中,我創建了PostgreSQL數據庫的視圖,並將該視圖映射到Django中的非託管模型。Django + PostgreSQL:查詢返回不正確的結果
出於某種原因,當我在Django中查詢這個模型時,其中一個元組返回的結果不正確。
這是我的CREATE VIEW代碼:
CREATE VIEW test_view_a AS
SELECT ROW_NUMBER() OVER (ORDER BY account_id, person_id)::int AS id,
AVG(EXTRACT(epoch FROM date_trunc('second', meeting_time)))::int AS avg_meeting_time,
AVG(EXTRACT(epoch FROM date_trunc('second', office_time)))::int AS avg_office_time,
AVG(EXTRACT(epoch FROM date_trunc('second', traffic_time)))::int AS avg_traffic_time,
account_id,
person_id
FROM test_view_b
GROUP BY account_id, person_id
ORDER BY account_id, person_id;
這是當我直接在數據庫中查詢返回的數據:
id | avg_meeting_time | avg_office_time | avg_traffic_time | account_id | person_id
----+------------------+-----------------+------------------+------------+-----------
1 | 64800 | 0 | 1514 | 1 | 8
2 | 14400 | 0 | 29290 | 3 | 9
3 | 14400 | 0 | 0 | 3 | 10
(3 rows)
當我通過Django的,第二個和第三個查詢這一觀點行會正確返回,但第一行返回的avg_meeting_time爲-1144800,並且avg_traffic_time爲1202400:
>>> from test.models import *
>>> queryset = ViewA.objects.all()
>>> '%i %i' % (queryset[0].avg_meeting_time, queryset[0].avg_traffic_time)
'-1144800 1202400'
我試圖直接通過django.db.connection對象查詢這個視圖,甚至嘗試執行查詢以這種方式生成視圖。結果總是一樣的,與數據庫上的不同。
我正在使用PostGIS的空間數據庫,如果這很重要。我試過將後端切換到psycopg2,但得到了相同的結果。
這是怎麼回事?
您可以發佈正在使用的模式? – 2012-07-07 01:06:23