Форум сайта python.su
Привет всем.
Продолжаю мучить алхимию и потихоньку перстраивать свою базу данных. Решил, что создание Db (схемы, таблицы, правила…) я всё-равно буду делать вручную (набор скриптов на SQL и PL/SQL) – возможностей для тонкой настройки, всё-таки, больше и благо оно требуется только во время разработки.
Теперь вопрос. Можно ли влезть в сохраниение объекта из самого объекта. Т.е. у меня есть функция на PL/SQL, котороая создаёт пользователя и я хочу, чтобы во время session.save(VeryBabUser) вызывалась она, а не “INSERT INTO users.users…”? Дело в том, что у меня уже готова большАя часть логики на PL/SQL и мне не хочется её переписывать. Тем более, что скорость работы этих функций на порядки(!) выше – сам писал тесты, для выявления наиболее быстрого способа и библиотеки, могу собрать в кучку и кинуть, если кому интересно. Ну и, само собой, моя функция делает не только INSERT…
И я не смог найти способа, собственно вызова функций базы данных. Ткните пальцем в доку, а то я в ней уже заблудился…
Офлайн
ZZZА в качестве триггера ее вызвать не получится?
И я не смог найти способа, собственно вызова функций базы данных.
Офлайн
slivlenОчень интересная мысль… только не понятная… Всё-таки бы чуток подробнее… Можно отправить в ман, не откажусь. С триггерами я вообще не работал, хотя и приблизительно представляю что это.
А в качестве триггера ее вызвать не получится?
Офлайн
:)
Например так:
session.execute(“select function();”)
если нужно чёт комитить, вызвать ещё
session.commit()
а можно:
session.scalar(func.function(arg1, arg2))
scalar - чтобы получить первое значение…
Отредактировано (Май 22, 2008 17:39:13)
Офлайн
ofigetitelnoЭто я уже нашёл.
session.execute(“select function();”)
ofigetitelnoА вот это то, что мне и нужно! Спасибо.
session.scalar(func.function(arg1, arg2))
scalar - чтобы получить первое значение…
Офлайн
ofigetitelnoА в Django такое есть?
Например так:
session.execute(“select function();”)
если нужно чёт комитить, вызвать ещё
session.commit()
а можно:
session.scalar(func.function(arg1, arg2))
scalar - чтобы получить первое значение…
Офлайн
PyCraft
транзакции там есть
Офлайн