Причина, по которой вы получаете ошибку, состоит в том, что вы пытаетесь преобразовать строку (например, setosa
) в число с плавающей точкой, что, очевидно, невозможно, потому что это не число.
Если вы хотите отобразить строковые категории в числа, вы можете использовать:
train["CLASS_LABEL"] = train["CLASS_LABEL"].factorize()[0]
это превратит ваши строки в числовые категории
Для этой самой проблемы я принял решение использовать инструмент миграции: Migratordotnet.
С миграциями (в любом инструменте) Вам использовали простой класс, чтобы выполнить Ваши изменения и отменить их. Вот пример:
[Migration(62)]
public class _62_add_date_created_column : Migration
{
public void Up()
{
//add it nullable
Database.AddColumn("Customers", new Column("DateCreated", DateTime) );
//seed it with data
Database.Execute("update Customers set DateCreated = getdate()");
//add not-null constraint
Database.AddNotNullConstraint("Customers", "DateCreated");
}
public void Down()
{
Database.RemoveColumn("Customers", "DateCreated");
}
}
Этот пример показывает, как можно обработать энергозависимые обновления, как добавление нового не - пустой столбец к таблице, которая имеет существующие данные. Это может быть автоматизировано легко, и можно легко пойти вверх и вниз между версиями.
Это было действительно ценным дополнением к нашей сборке и оптимизировало процесс очень .
я отправил сравнение различных платформ миграции в.NET здесь: http://benscheirman.com/2008/06/net-database-migration-tool-roundup
Необходимо рассмотреть использование инструмента сборки как MSBuild или NAnt. Мы используем комбинацию CruiseControl.NET, NAnt и Крепости SourceGear для обработки нашего развертывания, включая объекты SQL. Задача сборки дб NAnt называет sqlcmd.exe для обновления сценариев в нашем dev и средах подготовки после того, как они будут проверены в Крепость.
Пойдите сюда:
https://blog.codinghorror.com/get-your-database-under-version-control /
Прокручивают немного вниз к списку 5 ссылок на сайт odetocode.com. Фантастические пять серий. Я использовал бы это в качестве начальной точки, чтобы получить идеи и выяснить процесс, который будет работать на Вашу команду.
Если Вы говорите о попытке сохранить схемы базы данных в синхронизации, попытайтесь использовать Красный Логический элемент сравнение SDK SQL. Создайте временную базу данных на основе создать сценария (newDb) - это - то, на что Вы хотите, чтобы Ваша база данных была похожа. Сравните newDb со своей старой базой данных (oldDb). Получите массив изменений от того сравнения и примените его с помощью Красного Логического элемента. Вы могли встроить этот процесс обновления в Вас тесты, и можно попытаться заставить весь devs соглашаться, что существует одно место, где создать сценарий для базы данных сохранен. Эта та же практика работает хорошо на обновление Вашей базы данных через несколько версий и запущения скриптов миграции данных и процессов между каждым шагом (использующий документ XML для отображения сценариев создавания и миграции данных)
Редактирование: С Красным методом Логического элемента Вы только обеспокоены в, создают сценарии, не обновляют сценарии, так как Красный Логический элемент придумывает сценарий обновления. Это также позволит Вам отбросить и создать индексы, хранимые процедуры, функции, и т.д.
Мы использовали SQL, Выдерживают сравнение от RedGate в течение нескольких лет теперь:
http://www.red-gate.com/products/index.htm
про версия имеет интерфейс командной строки, который Вы могли, вероятно, использовать для установки процедур развертывания.
Мы используем измененную версию управления версиями базы данных, описанного K. Scott Allen . Мы используем Мастер Печати по базе данных для создания исходного базового сценария. Затем пользовательский инструмент C# на основе SQL SMO для дампа хранимых процедур, представлений и функций пользователя. Сценарии изменения, которые содержат схему и изменения данных, сгенерированы инструменты Red Gate . Таким образом, мы заканчиваем со структурой как
Database\
ObjectScripts\ - contains stored procs, views and user funcs 1-per file
\baseline.sql - database snapshot which includes tables and data
\sc.01.00.0001.sql - incremental change scripts
\sc.01.00.0002.sql
\sc.01.00.0003.sql
, инструмент пользователя создает базу данных при необходимости, применяет baseline.sql при необходимости, добавляет таблица SchemaChanges при необходимости и применяет сценарии изменения по мере необходимости на основе того, что находится в таблице SchemaChanges. Тот процесс происходит как часть сценария сборки nant каждый раз, когда мы делаем сборку развертывания с помощью cc.net.
, Если кто-либо хочет исходный код к schemachanger приложению, я могу подбросить его на codeplex/google или везде, где.
Читайте ряд K.Scott Allen сообщений на управлении версиями базы данных .
Мы создали инструмент для применения сценариев базы данных управляемым способом на основе методов, которые он описывает, и оно работает хорошо.
Это могло затем использоваться в качестве части непрерывного процесса интеграции с каждым тестовым развертыванием базы данных изменения к нему, когда фиксация сделана к URL, Вы удерживаете сценарии обновления базы данных. Я предложил бы иметь базовый сценарий и сценарии обновления так, чтобы можно было всегда выполнять последовательность сценариев для получения базы данных от, он - текущая версия к новому состоянию, которое необходимо.
Это действительно все еще требует некоторого процесса и дисциплины от разработчиков хотя (все изменения должны включиться в новую версию основного сценария установки и сценария патча).
Недавно я установил git-1.6.4.2 на CentOS 5.3. Сборка git не составила труда, но попытки установить сопутствующие документы вызывали боль на каждом этапе. Версии xmlto
и asciidoc
из репозиториев yum были старыми, поэтому я построил их из исходного кода. Затем xmlto
(посредством xmllint
) пожаловался на отсутствие DocBook 4.5, и мне, наконец, удалось ввести их вручную.
Заходя так далеко, сборка документа успешно продвигается, пока
DB2TEXI user-manual.texi /bin/sh: line 1: docbook2x-texi: command not found make[1]: *** [user-manual.texi] Error 127
Но docbook2x установлен! Ах, команда другая:
$ rpm -q --filesbypkg docbook2x | grep bin.\*texi docbook2x /usr/bin/db2x_docbook2texi docbook2x /usr/bin/db2x_texixml
Даже пытаясь запустить ее вручную, я все равно не нахожу радости:
$ db2x_docbook2texi user-manual.xml --encoding=UTF-8 --to-stdout >user-manual.texi++ docbook2texi:/book: no description for directory entry /usr/bin/db2x_texixml:-::node: fatal error: node belongs to a different file Died at /usr/bin/db2x_texixml line 959.
Внизу INSTALL упоминается пара удобных целей make
: quick-install-man и quick-install-html. Получается, например, Я захочу продолжить (я "свернул свою собственную" систему много лет назад, нужно посмотреть, есть ли сходства). Одна вещь, которая вам понадобится, и я надеюсь, упомянута в этих ссылках, - это дисциплина. Я не совсем понимаю, как может работать любая автоматизированная система, если кто-то может что-то изменить в любое время. (Ваш вопрос подразумевает, что это может произойти в ваших производственных системах, но, очевидно, это не может быть правдой.)
Наличие одного человека (легендарного «администратора базы данных»), посвященного задаче управления изменениями в базах данных, особенно в производственных базах данных. , является очень распространенным решением. Что касается поддержания согласованности между базами данных разработки и тестирования X: если он / они используются многими пользователями, вам, опять же, лучше всего будет иметь отдельное лицо, выступающее в качестве «центра обмена информацией» для изменений; если у каждого есть свой экземпляр базы данных, затем они несут ответственность за поддержание порядка, и наличие централизованной согласованной базы данных «источник» будет иметь решающее значение, когда им понадобится обновленная базовая база данных.
Вот недавняя публикация о переполнении стека, которая может быть интересна: как -to-refresh-a-test-instance-of-sql-server-with-production-data-without-using
Одно из возможных решений - изучить реализацию аудита DML в ваших тестовых базах данных, а затем просто преобразовать эти журналы аудита в сценарий для окончательного тестирования и развертывания в реальном времени. В SQL Server 2008 значительно улучшен аудит DML, но даже SQL Server 2005 поддерживает его с помощью триггеров.
В книге Рефакторинг баз данных многие из этих проблем рассматриваются на концептуальном уровне.
Что касается инструментов, я знаю, что DB Ghost хорошо работает для SQL Server. Я слышал, что редакция Visual Studio Data Dude действительно была улучшена в последней версии, но у меня нет опыта работы с ней.
Что касается разработки базы данных в стиле непрерывной интеграции, то она очень быстро становится ресурсоемкой благодаря необходимому количеству копий базы данных. Это очень выполнимо, когда база данных может поместиться на рабочей станции разработчика, но непрактично, когда база данных настолько велика, что ее необходимо развернуть в сетке. Для этого вам понадобится 1 копия базы данных на разработчика [разработчиков, которые вносят изменения в DDL, а не только в процессы] + 6 общих копий. Распространены следующие копии:
* При копировании баз данных по строкам DEV / QA / PROD вам также потребуется запускать сценарии для обновления тестовых данных, относящихся к конкретной среде ( например, настройка пользователей в QA, которые команда QA использует для тестирования, но которых нет в производстве).
Мы используем Visual Studio for Database Professionals и TFS для создания версий и управления развертыванием наших баз данных. Это позволяет нам обращаться с нашими базами данных так же, как с кодом (извлекать, регистрировать, блокировать, просматривать историю версий, ветвление, сборку, развертывание, тестирование и т. Д.) И даже включать их в те же файлы решения, если мы хотим.
Наши разработчики могут работать с локальными базами данных, чтобы не вмешиваться друг в друга в общей среде. Когда они проверяют изменения базы данных в TFS, у нас есть непрерывная интеграция для сборки, тестирования и развертывания в нашей интегрированной среде разработки. У нас есть отдельные сборки для веток выпуска для создания сценариев разностного развертывания для каждой последующей среды.
Позже, если в выпуске обнаруживается ошибка, мы можем перейти в ветку выпуска и исправить код и базу данных одновременно.
Это отличный продукт, но его внедрение было затруднено на раннем этапе из-за маркетинговой ошибки Microsoft. Изначально это был отдельный продукт в рамках Team System. Это означало, что для одновременного использования функций выпуска для разработчиков и выпуска базы данных вам необходимо было перейти на гораздо более дорогую версию Team Suite. Мы (и многие другие клиенты) огорчили Microsoft по этому поводу, и мы были очень рады, что они объявили в этом году, что DB Pro добавлен в версию для разработчиков , и что любой, кто имеет лицензию на версию для разработчиков, может немедленно установить редакция базы данных.
Это означало, что для одновременного использования функций выпуска для разработчиков и выпуска базы данных вам необходимо было перейти на гораздо более дорогую версию Team Suite. Мы (и многие другие клиенты) огорчили Microsoft по этому поводу, и мы были очень рады, что они объявили в этом году, что DB Pro добавлен в версию для разработчиков , и что любой, кто имеет лицензию на версию для разработчиков, может немедленно установить редакция базы данных. Это означало, что для одновременного использования функций выпуска для разработчиков и выпуска базы данных вам необходимо было перейти на гораздо более дорогую версию Team Suite. Мы (и многие другие клиенты) огорчились по этому поводу в Microsoft, и мы были очень рады, что они объявили в этом году, что DB Pro добавлен в версию для разработчиков , и что любой, кто имеет лицензию на версию для разработчиков, может немедленно установить редакция базы данных.Гас небрежно упомянул DB Ghost (выше) - я использую его как потенциальное решение.
Краткий обзор того, как моя компания использует DB Ghost:
Процесс «обновления» включает в себя создание чистого 'исходная' БД, а затем (после предварительного обновления пользовательских скриптов) сравнение схем исходной и целевой БД. DB Ghost обновляет целевую БД в соответствии с
. Мы регулярно вносим изменения в производственные БД (у нас есть 14 клиентов в 7 различных производственных средах), но неизбежно развертываем достаточно большой набор изменений с исполняемым файлом обновления DB Ghost (созданным во время нашей сборки процесс). Любые производственные изменения, которые не были зарегистрированы в источнике (или которые не были возвращены в соответствующую выпускаемую ветвь), УТЕРЯНЫ. Это вынудило всех последовательно регистрировать изменения.
Подводя итог: