Python как средство миграции баз.

python logo kolbosa.kz

Доброго всем времени суток. Сегодня я расскажу вам о проблеме с которой, в силу своей работы, я столкнулся. Задача была крайне проста и, как казалось на первый взгляд, не должна занять много времени. Впрочем она и не заняла бы, если бы я не решил использовать для ее реализации сторонний софт. Но обо всем по порядку:

1. Задача была выгрузить из LDAPS значения соответствующие определенному запросу и внести их в базу mysql (База OTRS), возможно эту задачу, некий гуру OTRS мог бы решить и не прибегая к какому бы то ни было стороннему софту, но увы и ах, я не из их числа.

2. Для реализации данной задачи меня посетила мысль – «А не замастрячить ли это все на Python», но так как мне было лень писать, я решил найти альтернативу и альтернативой стал софт под название lsc. Софтинка в принципе не плохая, если бы не одно но. И но это — BASE64 в которой хранятся все кириличные поля. В общем и целом миграция то у меня мигрировала, но кирилица отображалась в виде «???» (вопросиков т. е.), долгие мытарства по преобразованию кодировок, ковырянию конфигов и кодов, короче — фиг.

3. Промаявшись с этой програмулиной (LSC) и потеряв множество времени и сил. Я вернулся к идее описать эту задачу на python.

А теперь мудрый совет: «Если вы можете реализовать что-то своими силами, без применения внешнего ПО — делайте».

Соответственно на этом предыстория заканчивается и начинается статья, суть которой в описании кода python, который я накидал за 2 часа и который прекрасно работает, смею сразу заметить, что код не претендует ни на премию самого быстрого не на премию самого красивого, но если кому пригодиться, то прошу.

Для реализации данного скрипта вам потребуется установить python-ldap и mysql-connector-python

Во и все. Данныем мигрированны. Для выполнения данного скрипта с некоторой периодикой используйте crontab.

Надеюсь инфа будет вам полезна. Всяческие предложения по рефракторингу будут лично мне крайне интересны. Удачи.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Перед отправкой формы:
Human test by Not Captcha