Atrapa migraciones 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.
...Squabble también se puede integrar con su editor para detectar errores en archivos SQL.
$ echo ' SELECT * FROM WHERE x = y; ' | squabble --reporter=plain
stdin:1:15 CRITICAL: syntax error at or near "WHERE"Actualmente, la mayoría de las reglas se han centrado en Postgres y sus peculiaridades. Sin embargo, Squabble puede analizar cualquier ANSI SQL y se agradecen nuevas reglas específicas de otras bases de datos.
$ pip3 install squabble
$ squabble --helpNota
Squabble solo es compatible con Python 3.5+
Si desea instalar desde la fuente:
$ 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 una lista de reglas, intente
$ squabble --list-rulesLuego, para mostrar más información detallada sobre una regla (como opciones de justificación y configuración)
$ squabble --show-rule AddColumnDisallowConstraintsUna vez que un archivo de configuración está en su lugar, se puede pasar explícitamente en la línea de comando o buscar automáticamente.
$ squabble -c path/to/config ... Si no se da explícitamente en la línea de comandos, Squabble buscará un archivo llamado .squabblerc en los siguientes lugares (en orden):
./.squabblerc(git_repo_root)/.squabblerc~/.squabblerc La configuración también se puede aplicar a nivel de archivo utilizando comentarios de la línea SQL en el formulario -- squabble-enable:RuleName o -- squabble-disable:RuleName .
Por ejemplo, para deshabilitar RuleA y habilitar RuleB solo para un archivo, esto podría hacerse:
-- squabble-disable:RuleA
-- squabble-enable:RuleB config=value array=1,2,3
SELECT email FROM users WHERE ...; Para evitar que Squabble se ejecute en un archivo, use -- squabble-disable . Tenga en cuenta que esto también deshabilitará la verificación de sintaxis. Tenga en cuenta que este indicador tendrá prioridad sobre cualquier otra configuración establecida en la línea de comando o en el resto del archivo.
{
"reporter" : " color " ,
"plugins" : [
" /some/directory/with/custom/rules "
],
"rules" : {
"AddColumnsDisallowConstraints" : {
"disallowed" : [ " DEFAULT " , " FOREIGN " , " NOT NULL " ]
}
}
} squabble , por supuesto, no es la primera herramienta en este espacio. Si no se ajusta a sus necesidades, considere una de estas herramientas:
SELECT que las migraciones.Este proyecto no sería posible sin:
La imagen del logotipo utilizada en la documentación es creada por Gianni - Dolce Merda del proyecto sustantivo.