Нет простого способа получить доступ к SMO из Python (потому что нет общего решения для доступа к .NET из Python), поэтому я написал бы инструмент командной строки на C # и вызвал бы его из Python, используя модуль subprocess
, Возможно, вы могли бы что-то сделать с ctypes
, но я понятия не имею, возможно ли это.
Но, возможно, более важный вопрос заключается в том, почему вы хотите или должны это делать. Действительно ли структура вашей базы данных меняется так часто? Если это так, то, по-видимому, у вас нет реального контроля над ним, так какая польза от контроля источников в этом сценарии? Как вы развертываете изменения базы данных в первую очередь? Обычно изменения переходят от контроля источников к производству, а не наоборот, поэтому «основным» источником DDL (включая таблицы, индексы и т. Д.) Является SVN, а не база данных. Но вы не дали много информации о том, что вам действительно нужно для достижения, поэтому, возможно, есть веская причина для необходимости делать это в вашей среде.