我正在努力解决这个问题(由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()
似乎解决了这个问题。
答案 0 :(得分:0)
正如在编辑中所写的那样,问题在于刷新。