ZZZ
Май 21, 2008 04:46:16
Привет всем.
Продолжаю мучить алхимию и потихоньку перстраивать свою базу данных. Решил, что создание Db (схемы, таблицы, правила…) я всё-равно буду делать вручную (набор скриптов на SQL и PL/SQL) – возможностей для тонкой настройки, всё-таки, больше и благо оно требуется только во время разработки.
Теперь вопрос. Можно ли влезть в сохраниение объекта из самого объекта. Т.е. у меня есть функция на PL/SQL, котороая создаёт пользователя и я хочу, чтобы во время session.save(VeryBabUser) вызывалась она, а не “INSERT INTO users.users…”? Дело в том, что у меня уже готова большАя часть логики на PL/SQL и мне не хочется её переписывать. Тем более, что скорость работы этих функций на порядки(!) выше – сам писал тесты, для выявления наиболее быстрого способа и библиотеки, могу собрать в кучку и кинуть, если кому интересно. Ну и, само собой, моя функция делает не только INSERT…
И я не смог найти способа, собственно вызова функций базы данных. Ткните пальцем в доку, а то я в ней уже заблудился…
slivlen
Май 21, 2008 10:21:47
ZZZ
И я не смог найти способа, собственно вызова функций базы данных.
А в качестве триггера ее вызвать не получится?
ZZZ
Май 22, 2008 01:36:46
slivlen
А в качестве триггера ее вызвать не получится?
Очень интересная мысль… только не понятная… Всё-таки бы чуток подробнее… Можно отправить в ман, не откажусь. С триггерами я вообще не работал, хотя и приблизительно представляю что это.
В принципе, мысль интересная. В Postgres это скорее правила… Блин, да это решение первой проблемы! Правда через жопу, но зато будет работать.
А вот как вызывать функции, мне по прежнему не понятно.
ofigetitelno
Май 22, 2008 16:07:00
:)
Например так:
session.execute(“select function();”)
если нужно чёт комитить, вызвать ещё
session.commit()
а можно:
session.scalar(func.function(arg1, arg2))
scalar - чтобы получить первое значение…
ZZZ
Май 23, 2008 02:51:22
ofigetitelno
session.execute(“select function();”)
Это я уже нашёл.
ofigetitelno
session.scalar(func.function(arg1, arg2))
scalar - чтобы получить первое значение…
А вот это то, что мне и нужно! Спасибо.
slav0nic
Июль 4, 2008 15:36:20
PyCraft
транзакции там есть