Я работаю над настольным приложением python-pyside, которое использует удаленную базу данных, и приложение установлено на нескольких компьютерах, приложение использует sql alchemy.
Проблема:
Приложение имеет настольный принтер, оно состоит из 8 записей.
Предположим, приложение работает на 2 машинах m1 и m2,
если пользователь m1 удаляет / обновляет / вставляет запись принтера, и после этого, если m2 получает принтер, то он показывает 8 принтеров (так же, как при запуске)
Если m2 выполняет какие-либо операции обновления / вставки / удаления в приложении и пытается получить записи с принтера, то он показывает правильные данные.
Я думаю, что эта проблема / поведение связано с сеансом sql alchemy.
Код:
#config file
self.engine = create_engine ('mysql://user:pwd@remotehost/database')
#Database session file
configuration=Config() #config consist db,dbusername,
#host name, pwd and engin
engine =configuration.engine
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
#initialization
import models
Base.metadata.create_all(bind=engine)
#Printer model file
#get query
printers = db_session.query(Printer).filter(Printer.status != 0)
.order_by(asc(Printer.name)).all()
#alternative get query used/it also have same problem
printers = Printer.query.filter(Printer.status != 0)
.order_by(asc(Printer.name)).all()
Сессия инициализируется только один раз в главном / начальном файле приложения.
Пожалуйста, помогите мне.
Я пробовал db_session.flush () также autoflush = True, но это не сработало.