Форум сайта python.su
Добрый день, форумчане!
Работаю с алхимией, но в ней не особо шарю, поэтому и возникла следующая проблема:
У меня есть два проекта пирамиды, у каждого проекта своя БД, но она одинаковая для обеих проектов. В проекте 1 я изменияю некоторые поля в БД, и передаю все поля для изменений в другой проект POST запросом (чтобы не вычислять дельту и искать какие поля я заменяю. JSON может быть довольно таки большим). На проект 2, я делаю запрос по такой же записи (содержит 5 таблиц) из БД. И заменяю поля, на те который получил в запросе. Но т.к. я получаю в проекте 2 записи и поля PK. Поэтому измененные данные в запросе я не могу сделать flush в БД.
Подскажите, можно ли как-то удалять поля из запроса, чтобы алхимия думала что они не изменяются и я просто хочу обновить другие поля.
На сколько я понимаю даже после запроса алхимия даже неизменненые поля считает уже полем с изменением.
P.S.: Сделать запрос без PK не получается, получается на sql достаточно сложный запрос и похоже что база его не вывозит.
Тело запроса, который я делаю:
current_test = session.query(Test) \ .join(Test.testmu, isouter=True) \ .join(Test.typetest, isouter=True) \ .join(Test.termtest, isouter=True) \ .join(Test.teststatus, isouter=True) \ .join(Test.reasondisparity, isouter=True) \ .join(Test.agreed_test, isouter=True) \ .join(Intervalviolation, Testmu.idtestmu == Intervalviolation.idtestmu, isouter=True) \ .join(Elementmu, Testmu.idtestmu == Elementmu.idtestmu, isouter=True) \ .join(Elementmu.criterionmu, isouter=True) \ .filter(Test.idtest == id_test).one()
Офлайн