Pegue migrações SQL inseguras.
$ 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.
...A briga também pode ser integrada ao seu editor para capturar erros nos arquivos SQL.
$ echo ' SELECT * FROM WHERE x = y; ' | squabble --reporter=plain
stdin:1:15 CRITICAL: syntax error at or near "WHERE"Atualmente, a maioria das regras foi focada no Postgres e em suas peculiaridades. No entanto, a briga pode analisar qualquer SQL ANSI e novas regras específicas para outros bancos de dados são apreciadas!
$ pip3 install squabble
$ squabble --helpObservação
A briga é suportada apenas no Python 3.5+
Se você quiser instalar a partir da fonte:
$ git clone https://github.com/erik/squabble.git && cd squabble
$ python3 -m venv ve && source ve/bin/activate
$ python setup.py install
$ squabble --help Para ver uma lista de regras, tente
$ squabble --list-rulesEntão, para mostrar mais informações detalhadas sobre uma regra (como lógica e opções de configuração)
$ squabble --show-rule AddColumnDisallowConstraintsDepois que um arquivo de configuração estiver em vigor, ele pode ser passado explicitamente na linha de comando ou procurado automaticamente.
$ squabble -c path/to/config ... Se não estiver explicitamente dado na linha de comando, a briga procurará um arquivo chamado .squabblerc nos seguintes locais (em ordem):
./.squabblerc(git_repo_root)/.squabblerc~/.squabblerc A configuração também pode ser aplicada no nível do arquivo usando os comentários da linha SQL no formulário -- squabble-enable:RuleName ou -- squabble-disable:RuleName .
Por exemplo, para desativar RuleA e habilitar RuleB apenas para um arquivo, isso pode ser feito:
-- squabble-disable:RuleA
-- squabble-enable:RuleB config=value array=1,2,3
SELECT email FROM users WHERE ...; Para impedir que a briga seja executada em um arquivo, use -- squabble-disable . Observe que isso também desativará a verificação da sintaxe. Observe que esse sinalizador terá precedência sobre qualquer outra configuração definida na linha de comando ou no restante do arquivo.
{
"reporter" : " color " ,
"plugins" : [
" /some/directory/with/custom/rules "
],
"rules" : {
"AddColumnsDisallowConstraints" : {
"disallowed" : [ " DEFAULT " , " FOREIGN " , " NOT NULL " ]
}
}
} squabble , obviamente, não é a primeira ferramenta neste espaço. Se não atender às suas necessidades, considere uma dessas ferramentas:
SELECT do que as migrações.Este projeto não seria possível sem:
A imagem do logotipo usada na documentação é criada por Gianni - Dolce Merda do projeto Substantivo.