Если ваше выражение каждый раз напоминает R + jX, вы можете создать следующий класс
class ComplexNumber(models.Model):
real_number = models.FloatField('Real number part')
img_number = models.FloatFoeld('Img number part')
def __str__(self):
return complex(self.real_number, self.img_number)
и обработать строку результата с помощью python , см. Здесь
Если вы иметь несколько реальных и img-частей, вы можете справиться с этим с помощью внешних ключей или полей ManyToMany. Это может зависеть от ваших потребностей.
Я думаю самая важная практика в обеспечении, что Ваши сценарии перевыполнимы, должен.... выполнить их против тестовой базы данных многократно после любых изменений в сценарии. Ошибки, с которыми Вы встречаетесь, должны сформировать Ваши методы.
Править
В ответ на Ваше редактирование на синтаксисе в целом я думаю, лучше избегать системных таблиц в пользу системных представлений, например.
if exists(Select 1 from information_schema.tables where table_name = 'sometable')
drop sometable
go
if exists(Select 1 from information_schema.routines where
specific_name = 'someproc')
drop someproc
Для создания вещей легче, я настраиваю студию управления к объектам сценария как rerunnable
Я недавно нашел регистрацию для существования, которое я не знал, существовал, и мне понравилось оно, потому что это короче
IF OBJECT_ID('table_name') IS NOT NULL DROP TABLE table_name
прежде, я раньше использовал
IF EXISTS (SELECT * FROM information_schema.tables WHERE table_name = 'table_name')
DROP TABLE table_name
Который я нашел полезным, потому что это немного более портативно (MySql, Пост-ГРЭС, и т.д.), принимая во внимание различия, конечно
Для поддержания схем посмотрите на инструмент миграции. Я думаю, что LiquiBase работал бы на SQL Server.
Добавить к Вашему списку:
CREATE OR ALTER PROCEDURE
вместо CREATE PROCEDURE
или ALTER PROCEDURE
если Ваша разновидность поддержки SQL этоНо в конечном счете, я пошел бы с одним из следующего:
INSERT
операторы и полностью воссоздают весь DB с нуля.Необходимо будет также проверить на внешние ключи на любых таблицах, что можно отбрасывать/воссоздавать. Кроме того, рассмотрите любые изменения данных, которые Вы могли бы внести - удаляют строки прежде, чем попытаться вставить во второй раз, и т.д.
Вы также могли бы хотеть вставить код для проверки на данные прежде, чем удалить таблицы как гарантию так, чтобы Вы не отбрасывали таблицы, которые уже используются.
Поскольку SQL обрабатывает оператор в пакетном режиме, можно выйти
Это просто к вашему сведению, я просто выполнил его 10 раз
IF EXISTS ( SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[foo]')
AND OBJECTPROPERTY(object_id, N'IsUserTable') = 1 )
DROP TABLE foo
GO 10 -- run the batch 10 times
Это просто к вашему сведению, я просто выполнил его 10 раз
Начало Пакета цикла выполнения
выполнение завершилось 10 раз.
"ЕСЛИ OBJECT_ID ('table_name', 'U') ЯВЛЯЕТСЯ NOT NULL", синтаксис хорош, он может также использоваться для процедур: ЕСЛИ OBJECT_ID ('procname', 'P') ЯВЛЯЕТСЯ NOT NULL...
... и триггеры, представления, и т.д. Вероятно, хорошая практика для определения типа (U для таблицы, P для прогр, и т.д. не помните точные буквы за все типы) в случае, если Ваше именование strandards позволяет процедурам и таблицам иметь аналогичные имена...
Кроме того, хорошая идея могла бы состоять в том, чтобы создать Ваши собственные процедуры, который изменяет таблицы с обработкой ошибок, надлежащей для Вашей среды. Например:
Такой procs делает создание повторяемым (в том же или другом дб) сценарии изменения намного легче.
/B