Форум сайта python.su
0
Есть две БД.
FireBird и PostgreSQL
Нужно синхронизировать содержимое. Из таблицы PostgreSQL данные прокидывать в FireBird. Как это сделать? В обе таблицы я добавил флаг синхронизации. Типа проведена/не проведена.
Создаю курсор и делаю SELECT из БД1 в поисках необходимых записей. Предположим я их выбрал. А дальше как быть? Как это выборку в другую БД отправить? Создать второй объект курсора, так? А сам запрос как сформировать на основании полученных данных?
postcursor.execute('SELECT customer_id, customer_name, customer_data, customer_priority, customer_status, fl_ready FROM CUSTOMER WHERE fl_ready=0') postselect_result = postcursor.fetchall()
Отредактировано Suliman (Июнь 25, 2014 16:17:43)
Офлайн
7
По сути Вы пишете сейчас программу для репликации данных между СУБД. Это, в общем-то, непростая задача
Если следовать Вашей реализации, то в коде Вам просто нужно держать открытыми 2 соединения - одно с FireBird, другое - с PostgreSQL. У каждого соединения будет свой курсор.
Так вот из курсора PostgreSQL делаете SELECT, а из курсора FireBird делаете INSERT.
Но вообще я бы порекомендовал синхронизировать данные через обычный слив/загрузку SQL-дампа. Конечно, если данных у Вас не очень много.
В противном случае Вам нужно будет как-то поддерживать версионность и отдавать дельту (только изменившееся), чтобы не гонять каждый раз десятки/сотни/тысячи гигабайт данных между таблицами
А вообще напишите поподробнее, в чем конкретно у Вас проблема.
Отредактировано john123 (Июнь 27, 2014 10:16:16)
Офлайн