У меня есть представление, определенное в postgres, в отдельной схеме для данных, которые оно использует. Он содержит три столбца:
mydb=# \d "my_views"."results"
View "my_views.results"
Column | Type | Modifiers
-----------+-----------------------+-----------
Date | date |
Something | character varying(60) |
Result | numeric |
Когда я запрашиваю его из psql или администратора, я получаю такие результаты:
bb_adminpanel=# select * from "my_views"."results";
Date | Something | Result
------------+-----------------------------+--------------
2015-09-14 | Foo | -3.36000000
2015-09-14 | Bar | -16.34000000
2015-09-12 | Foo | -11.55000000
2015-09-12 | Bar | 11.76000000
2015-09-11 | Bar | 2.48000000
Однако, запрашивая его через django, я получаю другой набор: (c - объект курсора в базе данных)
c.execute('SELECT * from "my_views"."results"')
c.fetchall()
[(datetime.date(2015, 9, 14), 'foo', Decimal('-3.36000000')),
(datetime.date(2015, 9, 14), 'bar', Decimal('-16.34000000')),
(datetime.date(2015, 9, 11), 'foo', Decimal('-11.55000000')),
(datetime.date(2015, 9, 11), 'bar', Decimal('14.24000000'))]
Что совсем не совпадает — первые две строки правильные, а последние две действительно странные — у них сдвинута дата, а Результат последней записи — это сумма двух последних.
Я понятия не имею, почему это происходит, любые предложения приветствуются.
Вот определение вида:
SELECT a."Timestamp"::date AS "Date",
a."Something",
sum(a."x") AS "Result"
FROM my_views.another_view a
WHERE a.status::text = ANY (ARRAY['DONE'::character varying::text, 'CLOSED'::character varying::text])
GROUP BY a."Timestamp"::date, a."Something"
ORDER BY a."Timestamp"::date DESC;
а "another_view" выглядит так:
Column | Type | Modifiers
---------------------------+--------------------------+-----------
Timestamp | timestamp with time zone |
Something | character varying(60) |
x | numeric |
status | character varying(100) |
(некоторые столбцы опущены)
"betbot_views"."daily_results"
и почему вы используете его в своем коде вместо"my_views"."results"
? Можете ли вы показать свое определение представления (код SQL для его воссоздания)? - person GwynBleidD   schedule 21.09.2015