|
Работа с 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, 16:44 |
|
Работа с firebird под python
|
|||
---|---|---|---|
#18+
Леди и джентльмены, а сама идея с эвентом точно хороша? Я дико извиняюсь что мне лень поднимать доку, но склероз мне шепчет, что подписчик получает извещение на коммите, а не на инсёрте. Что есть правильно, имхо. То есть, в случае инсёртов в затяжной транзакции оперативное получение извещений с триггера - иллюзия. Я не хочу сказать, что так делать нельзя. Просто чтобы девушка подумала ещё раз - а то ли она делает, что хочет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2017, 18:16 |
|
Работа с firebird под python
|
|||
---|---|---|---|
#18+
СПМ> в случае инсёртов в затяжной транзакции оперативное СПМ> получение извещений с триггера - иллюзия. Это зависит от версии и как написать, я уже как-то подсказывал решение. P.S. Топик и проблему/задачу ТСа не читал. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2017, 20:12 |
|
Работа с firebird под python
|
|||
---|---|---|---|
#18+
Сохранение записи будет в другой программе. А данная программа должна отслеживать появление новой записи. Я в свое время писала программу на Delphi с такой же задачей, у меня все работало нормально. На python пишу недавно, поэтому не знаю как исправить возникшую ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2017, 10:24 |
|
Работа с firebird под python
|
|||
---|---|---|---|
#18+
Разобралась: надо после conduit = con.event_conduit(['new_date']) поставить команду conduit.begin() Тогда все работает ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2017, 10:32 |
|
Работа с 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2017, 13:25 |
|
|
start [/forum/topic.php?fid=40&fpage=38&tid=1561287]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 141ms |
0 / 0 |