使用django.db.connections中的游标时没有结果

时间:2017-08-30 10:13:19

标签: sql django postgresql

我基本上试图运行以下查询。在自定义的sql语句中。

CREATE TEMPORARY TABLE input (
    id serial, certified boolean
);

INSERT INTO input (id, certified) VALUES (DEFAULT, True), (DEFAULT, False), (DEFAULT, True), (DEFAULT, False), (DEFAULT, True), (DEFAULT, False);

CREATE OR REPLACE FUNCTION update_record(_input input)
RETURNS input AS $$
    UPDATE "tests_person"
    SET certified=_input.certified
    WHERE certified=_input.certified
    RETURNING _input.id, _input.certified
$$ LANGUAGE SQL;

WITH new_updated AS (
    SELECT upd.*
    FROM input, update_record(input) as upd
    WHERE upd.id is not NULL
),
except_updated AS (
    SELECT * FROM input
    EXCEPT ALL
    SELECT * FROM new_updated
)
SELECT id, certified FROM except_updated;

该代码如下所示。

from django.db import connections

sql = '''the above sql code'''

with connection.cursor() as cursor:
    cursor.execute(sql)
    row = cursor.fetchone()

sql完全没有错误。但是当试图获取一行时,即使应该有结果也没有结果。我在这里有一个相同的sql:http://sqlfiddle.com/#!17/48a30/75在小提琴中我得到了最后一个select语句的一些结果:SELECT id, certified FROM except_updated;

因此,当我在django中尝试这一点时,不确定为什么事情会有所不同。为了记录,我使用了postgres 9.6和django 1.11。

0 个答案:

没有答案