В течение длительного времени, пока l oop, я пытаюсь проверить первую запись, которая соответствует моим критериям, для выполнения действий над ней. Фильтрующий аспект запроса был удален из моего кода ниже только из соображений простоты, в любом случае я получаю ту же проблему).
В следующем фрагменте кода:
while True:
time.sleep(2)
item = Session.query(Model).order_by(Model.id.asc()).first()
print(f'Item id: {item.id}')
Чего я хочу добиться в качестве вывода:
Item id: 1
Item id: 1
Item id: 1
Вместо этого я получаю следующее:
Item id: 1
Item id: 2
Item id: 3
Что я делаю неправильно? Я не понимаю, почему он переходит к следующей записи, когда я даже не обновляю данные таблицы. Я даже не уверен, какой термин искать в Google, чтобы попытаться решить эту проблему ...
Я пытался использовать flush()
на Session
, но это, похоже, не имеет никакого значения .
В случае, если это имеет значение, я использую следующие импорты:
from flask import Flask
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session
from sqlalchemy.orm import sessionmaker
import os, time, sys
ОБНОВЛЕНИЕ:
Обновление того, что я ' мы обнаружили до сих пор: это на самом деле комбинация 2 вещей, которые делают это:
filter_by (status = 0)
item.status = 1
Добавление фильтра в запрос, а затем попытка обновить столбец состояния записи, например (независимо от того, действительно ли я фиксирую результат в БД или нет)
Так что, если я достану любой из этих 2 предметов, то он будет работать нормально ... но они мне нужны!