Найти - Пользователи
Полная версия: Изменение сохраниния объектов в Алхимии + PL/SQL функции.
Начало » Базы данных » Изменение сохраниния объектов в Алхимии + PL/SQL функции.
1
ZZZ
Привет всем.
Продолжаю мучить алхимию и потихоньку перстраивать свою базу данных. Решил, что создание Db (схемы, таблицы, правила…) я всё-равно буду делать вручную (набор скриптов на SQL и PL/SQL) – возможностей для тонкой настройки, всё-таки, больше и благо оно требуется только во время разработки.

Теперь вопрос. Можно ли влезть в сохраниение объекта из самого объекта. Т.е. у меня есть функция на PL/SQL, котороая создаёт пользователя и я хочу, чтобы во время session.save(VeryBabUser) вызывалась она, а не “INSERT INTO users.users…”? Дело в том, что у меня уже готова большАя часть логики на PL/SQL и мне не хочется её переписывать. Тем более, что скорость работы этих функций на порядки(!) выше – сам писал тесты, для выявления наиболее быстрого способа и библиотеки, могу собрать в кучку и кинуть, если кому интересно. Ну и, само собой, моя функция делает не только INSERT…

И я не смог найти способа, собственно вызова функций базы данных. Ткните пальцем в доку, а то я в ней уже заблудился…
slivlen
ZZZ
И я не смог найти способа, собственно вызова функций базы данных.
А в качестве триггера ее вызвать не получится?
ZZZ
slivlen
А в качестве триггера ее вызвать не получится?
Очень интересная мысль… только не понятная… Всё-таки бы чуток подробнее… Можно отправить в ман, не откажусь. С триггерами я вообще не работал, хотя и приблизительно представляю что это.
В принципе, мысль интересная. В Postgres это скорее правила… Блин, да это решение первой проблемы! Правда через жопу, но зато будет работать.

А вот как вызывать функции, мне по прежнему не понятно.
ofigetitelno
:)
Например так:
session.execute(“select function();”)
если нужно чёт комитить, вызвать ещё
session.commit()

а можно:
session.scalar(func.function(arg1, arg2))
scalar - чтобы получить первое значение…
ZZZ
ofigetitelno
session.execute(“select function();”)
Это я уже нашёл.

ofigetitelno
session.scalar(func.function(arg1, arg2))
scalar - чтобы получить первое значение…
А вот это то, что мне и нужно! Спасибо.
PyCraft
ofigetitelno
Например так:
session.execute(“select function();”)
если нужно чёт комитить, вызвать ещё
session.commit()

а можно:
session.scalar(func.function(arg1, arg2))
scalar - чтобы получить первое значение…
А в Django такое есть?
slav0nic
PyCraft
транзакции там есть
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB