Задать вопрос

Как в PonyORM сделать отложенную запись в БД?

Очередной привет)
Решил поиграться с PonyORM. Оказалась очень классная штука.
Но не могу решить одну проблему. Как сделать отложную запись в базу данных?

Например:
Есть у меня поставщик, я открываю окно с поставщиком меняю ему реквизиты, и после этого решаю сохранить данные или нет. Но Pony не позволяет изменять класс поставщика без @db_session, а если поставить @db_session то он сразу все комитит. В таком случае я не могу отменить изменения.
Сделал небольшой примерчик.
from my_class.orm_class import Vendor
from pony.orm import *

class VendorWindow():
    @db_session
    def __init__(self, order_id):
        self.vendor = Vendor[order_id]

    def ui_new_name(self, name):  # Изменение имени поставщика
        self.vendor.name = name

    def ui_new_phone(self, number):  # Изменение номера поставщика
        self.vendor.phone = number

    def ui_accept(self):  # Принять изменеия
        pass  # тут надо закомитить изменения

    def ui_cancel(self):  # Не применяит изменеия
        pass  # тут надо просто закрыть окно без изменений в БД


class Vendor(db.Entity):
    id = PrimaryKey(int, auto=True)
    name = Required(str)
    full_name = Optional(str)
    mail = Optional(str)
    phone = Optional(str)
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Meller008 Автор вопроса
Списался с Александром (создатель Pony). Он дал мне ответ что использовать Pony класс как промежуточный нельзя!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
22 янв. 2025, в 04:08
6000 руб./за проект
21 янв. 2025, в 23:55
20000 руб./за проект
21 янв. 2025, в 23:35
80000 руб./за проект