Ich benutze Postgres für mein Django-Projekt, und für komplizierte Abfragen zu db verwende ich connection.cursor(). Heute habe ich ein Problem mit rohen SQL-Abfrage mit Datetime im Filter:Django rohe SQL mit datetime
Als Ergebnis haben wir leere Liste. Aber wenn ich den von psql Konsole abfragen, sehe ich, dass Ergebnis nicht leer ist:
SELECT * FROM orders_orderstatus WHERE datetime > '2017-09-05 16:07:16';
id | status | datetime
----+--------------------+-------------------------------+
256 | created | 2017-09-05 16:10:59.602091+07
257 | delivered | 2017-09-05 16:11:00.834547+07
258 | created | 2017-09-05 16:11:03.499364+07
Warum django nicht diese Ergebnisse nicht erhalten?
Django ORM Umgehen kann tückisch sein. In vielen Fällen ist es besser, beim Erstellen von QuerySets zu bleiben. Die oben gezeigte Abfrage kann auf diese Weise einfach ausgeführt werden. – Chris
In jedem Fall [zwei Verbindungen zu PostgreSQL können andere Daten sehen] (https://www.postgresql.org/docs/current/static/mvcc-intro.html). Dies ist [ein Feature] (https://en.wikipedia.org/wiki/Multiversion_concurrency_control). Verwenden Sie Transaktionen mit Ihren manuellen Abfragen? Ohne weitere Informationen ist es schwer zu wissen, ob das hier passiert. – Chris