Поймать небезопасные миграции SQL.
$ squabble sql/migration.sql
sql/migration.sql:4:46 ERROR: column "uh_oh" has a disallowed constraint [1004]
ALTER TABLE big_table ADD COLUMN uh_oh integer DEFAULT 0;
^
# Use --explain to get more information on a lint violation
$ squabble --explain 1004
ConstraintNotAllowed
When adding a column to an existing table, certain constraints can have
unintentional side effects, like locking the table or introducing
performance issues.
...Ссора также может быть интегрирована с вашим редактором, чтобы поймать ошибки в файлах SQL.
$ echo ' SELECT * FROM WHERE x = y; ' | squabble --reporter=plain
stdin:1:15 CRITICAL: syntax error at or near "WHERE"В настоящее время большинство правил были сосредоточены на Postgres и его причудах. Тем не менее, ссоры могут проанализировать любой ANSI SQL, и новые правила, специфичные для других баз данных!
$ pip3 install squabble
$ squabble --helpПримечание
Ссора поддерживается только на Python 3.5+
Если вы хотите установить из источника:
$ git clone https://github.com/erik/squabble.git && cd squabble
$ python3 -m venv ve && source ve/bin/activate
$ python setup.py install
$ squabble --help Чтобы увидеть список правил, попробуйте
$ squabble --list-rulesЗатем, чтобы показать более многословную информацию о правиле (например, опции обоснования и конфигурации)
$ squabble --show-rule AddColumnDisallowConstraintsПосле того, как файл конфигурации на месте, его можно явно передавать в командной строке или автоматически посмотреть.
$ squabble -c path/to/config ... Если не явно указан в командной строке, Skabble будет искать файл с именем .squabblerc в следующих местах (в порядке):
./.squabblerc(git_repo_root)/.squabblerc~/.squabblerc Конфигурация также может быть применена на уровне файла с помощью комментариев SQL Line в форме -- squabble-enable:RuleName или -- squabble-disable:RuleName .
Например, чтобы отключить RuleA и включить RuleB только для одного файла, это может быть сделано:
-- squabble-disable:RuleA
-- squabble-enable:RuleB config=value array=1,2,3
SELECT email FROM users WHERE ...; Чтобы не допустить запуска ссоры в файле, используйте -- squabble-disable . Обратите внимание, что это также отключит проверку синтаксиса. Обратите внимание, что этот флаг будет иметь приоритет над любой другой настройкой, установленной либо в командной строке, либо в остальной части файла.
{
"reporter" : " color " ,
"plugins" : [
" /some/directory/with/custom/rules "
],
"rules" : {
"AddColumnsDisallowConstraints" : {
"disallowed" : [ " DEFAULT " , " FOREIGN " , " NOT NULL " ]
}
}
} squabble конечно, не первый инструмент в этом пространстве. Если это не соответствует вашим потребностям, рассмотрите один из этих инструментов:
SELECT операторах, чем на миграции.Этот проект не был бы возможно без:
Изображение логотипа, используемое в документации, создается Джанни - Дольче Мерда из проекта существительного.