Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.12.2017, 16:44
|
|||
---|---|---|---|
|
|||
Работа с firebird под python |
|||
#18+
Кто-нибудь работал с библиотекой fdb для python? Я в базе firebird создала триггер: CREATE OR ALTER TRIGGER DATE_VALUE_BI2 FOR DATE_VALUE ACTIVE BEFORE INSERT POSITION 2 AS BEGIN post_event 'new_date'; END чтобы получать уведомления как только в таблицу DATE_VALUE добавляются новые данные. На python использую библиотеку fdb: import fdb our_pathDB='D:\COUNTERS.FDB'#'D:\COUNTERS.FDB' /var/lib/firebird/2.5/COUNTERS.FDB /home/pi/kpu/COUNTERS.FDB our_userDB='sysdba' our_passwordDB='masterkey' our_hostDB='127.0.0.1' con = fdb.connect(database=our_pathDB, host=our_hostDB, user=our_userDB, password=our_passwordDB,charset= 'WIN1251') conduit = con.event_conduit(['new_date']) result = conduit.wait() print result conduit.close() con.close() При запуске возникает следующая ошибка: Traceback (most recent call last): File "H:/����/���������/Analise_KPU/post_event.py", line 23, in <module> result = conduit.wait() File "C:\Python27\lib\site-packages\fdb\fbcore.py", line 2088, in wait raise ProgrammingError("Event collection not initialized. It's necessary to call begin().") fdb.fbcore.ProgrammingError: Event collection not initialized. It's necessary to call begin(). Exception AttributeError: "'EventConduit' object has no attribute '_EventConduit__process_thread'" in <bound method Connection.__del__ of <fdb.fbcore.Connection object at 0x01B35D30>> ignored В чем может быть дело? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.12.2017, 18:16
|
|||
---|---|---|---|
|
|||
Работа с firebird под python |
|||
#18+
Леди и джентльмены, а сама идея с эвентом точно хороша? Я дико извиняюсь что мне лень поднимать доку, но склероз мне шепчет, что подписчик получает извещение на коммите, а не на инсёрте. Что есть правильно, имхо. То есть, в случае инсёртов в затяжной транзакции оперативное получение извещений с триггера - иллюзия. Я не хочу сказать, что так делать нельзя. Просто чтобы девушка подумала ещё раз - а то ли она делает, что хочет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.12.2017, 20:12
|
|||
---|---|---|---|
|
|||
Работа с firebird под python |
|||
#18+
СПМ> в случае инсёртов в затяжной транзакции оперативное СПМ> получение извещений с триггера - иллюзия. Это зависит от версии и как написать, я уже как-то подсказывал решение. P.S. Топик и проблему/задачу ТСа не читал. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.12.2017, 10:24
|
|||
---|---|---|---|
|
|||
Работа с firebird под python |
|||
#18+
Сохранение записи будет в другой программе. А данная программа должна отслеживать появление новой записи. Я в свое время писала программу на Delphi с такой же задачей, у меня все работало нормально. На python пишу недавно, поэтому не знаю как исправить возникшую ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.12.2017, 10:32
|
|||
---|---|---|---|
|
|||
Работа с firebird под python |
|||
#18+
Разобралась: надо после conduit = con.event_conduit(['new_date']) поставить команду conduit.begin() Тогда все работает ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.12.2017, 13:25
|
|||
---|---|---|---|
|
|||
Работа с firebird под python |
|||
#18+
rosatfdb.fbcore.ProgrammingError: Event collection not initialized. It's necessary to call begin(). rosatРазобралась: надо после conduit = con.event_conduit(['new_date']) поставить команду conduit.begin() Удивительная догадливость. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=40&mobile=1&tid=1561287]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
85ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 338ms |
total: | 513ms |
0 / 0 |