Управление исходным кодом и хранимые процедуры [дубликат]

Вероятно, самый безопасный способ открыть (и обрезать) новый файл для записи - использовать режим 'xb' . 'x' вызовет FileExistsError , если файл уже существует. 'b' необходим, потому что текстовый документ по сути является двоичным файлом: это zip-архив с XML и другими файлами внутри него. Вы не можете сжимать и распаковывать zip-файлы, если конвертируете байты с помощью кодировки символов.

Document.save принимает потоки, поэтому вы можете передать файл, открытый таким образом, чтобы сохранить ваш документ.

Ваш рабочий процесс может выглядеть примерно так:

doc = docx.Document(...)
...
# Make your document
...
with open('outfile.docx', 'xb') as f:
    doc.save(f)

Хорошая идея - использовать блоки with вместо raw open, чтобы обеспечить правильное закрытие файла даже в случае ошибка.

Точно так же, как вы не можете просто записать файл Word напрямую, вы также не можете добавить его. Способ «добавить» - открыть файл, загрузить объект Document , а затем записать его обратно, переписав исходный контент. Поскольку файл word представляет собой zip-архив, весьма вероятно, что добавленный текст даже не будет находиться в конце файла XML, в котором он находится, а тем более всего файла docx:

doc = docx.Document('file_to_append.docx')
...
# Modify the contents of doc
...
doc.save('file_to_append.docx')

Имейте в виду, библиотека python-docx может не поддерживать загрузку некоторых элементов, что может привести к окончательному удалению при сохранении файла таким образом.

5
задан APC 30 July 2010 в 12:52
поделиться

5 ответов

Как другие люди сказали, начнитесь с каждым, сохранил proc в разделенном текстовом файле, который является объектом управления исходным кодом. Запишите сценарий, который удаляет все Вы, хранимые процедуры затем воссоздают их от текстовых файлов (при входе/создании отчетов любых ошибок) – этот скрипт должно быть легко запустить. Затем каждый раз Вы обновляете от управления исходным кодом, повторно выполняет сценарий. Все редактирования к хранимым процедурам должны быть сделаны к текстовому файлу, не “живая” копия на Вашей локальной базе данных иначе Вы освободите изменения, когда Вы сделаете обновление.

Вы скоро захотите некоторым образом аудита Вашей схемы базы данных и создания сценариев обновления и т.д.

Если Вы только используете SQL-сервер, затем полагают, что SQL Выдерживает сравнение от Reg-логического-элемента. Я думаю, что это сравнит сохраненный procs (и другой sql) в текстовом файле с тем, что находится в Вашей базе данных и синхронизации два. Так позволяя Вам использовать инструменты редактирования в SqlServer для редактирования живых хранимых процедур.

(С конца 2009 Красный Логический элемент как раз собирается поставляться, Sql Выдерживают сравнение для Oracle),

Мне сказали, что инструмент Diff ApexSQL является другой опцией вместо Sql, Выдерживают сравнение, Редактирование ApexSQL утверждает, что обеспечило интеграцию управления исходным кодом.

В высокопроизводительном рассматривают Выпуск Системной базы данных Команды Visual Studio, однако он стоит много, затем Вам, вероятно, придется заплатить еще больше за поддержку Oracle со стороны третьей стороны. Но если Вы - партнер Microsoft (или может стать одним), можно получить некоторые покровы очень дешево.

См. также Делают Вас управление исходным кодом Ваши базы данных? на StackOverflow для хорошего набора ответов на большей проблеме.

3
ответ дан 18 December 2019 в 13:20
поделиться

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

Существует много инструментов разности базы данных вокруг этого, может помочь Вам разработать то, что изменяется между версиями.

4
ответ дан 18 December 2019 в 13:20
поделиться

Сценарий все хранимые процедуры в папку. Один файл на хранимую процедуру.

Затем просто помещенный, что папка, полная файлов при управлении исходным кодом, точно как Вы были бы для своего другого исходного кода.

Также помогает, существует ли пакетный файл или подобен для добавления этих хранимых процедур вместе, это будет "базой данных обновления к последней версии" сценарий.

Существуют способы управлять хранимыми процедурами в самой базе данных, но я нашел, что это самый простой метод.

3
ответ дан 18 December 2019 в 13:20
поделиться

В дополнение к SQL Красного Логического элемента Сравнивают, рассматривают инструмент Diff ApexSQL для проверки различия в структуре между базами данных. Можно также хотеть рассмотреть инструменты управления, которые интегрируют управление исходным кодом. Редактирование ApexSQL обеспечивает интеграцию управления исходным кодом.

2
ответ дан 18 December 2019 в 13:20
поделиться

См. Решение Джозефа здесь: Как лучше всего управлять версиями хранимых процедур моего SQL-сервера?

У него есть инструмент для автоматизации создания файлов сценариев, которые затем можно зарегистрировать в SVN (или в любом другом репозитории, на самом деле).

2
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: