为什么此查询不起作用(EXISTS问题)

时间:2011-06-08 16:56:34

标签: python sql sqlalchemy exists

我正在努力解决这个问题(由sqlalchemy生成。为了清晰起见,我将其重命名)

SELECT table.x + :dx AS cx, table.y + :dy AS cy 
FROM table
WHERE NOT (EXISTS (SELECT * FROM table AS table_1
                   WHERE table_1.x = cx AND table_1.y = cy))
  AND     (EXISTS (SELECT * FROM table2
                   WHERE table2.table_id = table.id))

对于dx,dy = 1,1和表:

 Table:
  id | x | y
 ----+---+---
   1 | 0 | 0

 Table2:
  id | table_id
 ----+----------
  1  | 1

它应该返回:

  cx | cy
 ----+----
   1 |  1

然而,第二个条件似乎是假的。

编辑:这似乎是SQLAlchemy中事务刷新的问题。我认为在执行查询(非ORM映射)的情况下,它将自动刷新。但是,它似乎没有在这种情况下刷新或以不正确的顺序刷新。无论如何,添加额外的model.DBSession.flush()似乎解决了这个问题。

1 个答案:

答案 0 :(得分:0)

正如在编辑中所写的那样,问题在于刷新。