LINUX.ORG.RU

Instance 'xxx' has been deleted

 ,


0

3

есть python code с sqlachemy. Соотв там используется query:

while True:
    row = db.session.query(test).filter_by()
    for r in row:
        pass
    time.sleep(10)

Если в БД удалить записи в консоли, то в результате возникают ошибки, указанные в заголовке темы. Как в случае возниковения ошибки перечитать запрос или по крайней мере очистить кэш sqlalchemy, так чтобы при след итерации с этой сессией отдавались правильные данные ?. rollback и т п не помогает


Все нормально работает

import time
from sqlalchemy import Column, Integer
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()


class Test(Base):
    __tablename__ = "test"
    id = Column(Integer, primary_key=True, autoincrement=True)

    def __repr__(self):
        return str(self.id)

from sqlalchemy import create_engine
engine = create_engine('postgresql://postgres:postgres@localhost/test')

from sqlalchemy.orm import Session
session = Session(bind=engine)

while True:
    row = session.query(Test).filter_by()
    for r in row:
        print(r)
    time.sleep(10)
uralbash
()

Никогда не пользовался алхимией и не представляю как она работает, но что мешает перехватывать эксепшн?

Впрочем, твоя ошибка намекает на неправильную работу с транзакциями, имхо. Выполняй запрос и итерацию в транзакции. Но только не пихай весь цикл туда.

true_admin ★★★★★
()
Ответ на: комментарий от uralbash

Гм может версию поновее поставить ? стоит 0.8

Jopich
() автор топика

Сессию в цикле новую бери.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.