Cattrez des migrations SQL dangereuses.
$ 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.
...La querelle peut également être intégrée à votre éditeur pour assister aux erreurs dans les fichiers SQL.
$ echo ' SELECT * FROM WHERE x = y; ' | squabble --reporter=plain
stdin:1:15 CRITICAL: syntax error at or near "WHERE"Actuellement, la plupart des règles se sont concentrées sur les Postgres et ses bizarreries. Cependant, la querelle peut analyser tout SQL ANSI et les nouvelles règles spécifiques aux autres bases de données sont appréciées!
$ pip3 install squabble
$ squabble --helpNote
La querelle est prise en charge uniquement sur Python 3.5+
Si vous souhaitez installer à partir de la source:
$ git clone https://github.com/erik/squabble.git && cd squabble
$ python3 -m venv ve && source ve/bin/activate
$ python setup.py install
$ squabble --help Pour voir une liste de règles, essayez
$ squabble --list-rulesEnsuite, pour afficher plus d'informations verbales sur une règle (telles que la justification et les options de configuration)
$ squabble --show-rule AddColumnDisallowConstraintsUne fois qu'un fichier de configuration est en place, il peut être passé explicitement sur la ligne de commande ou le recherché automatiquement.
$ squabble -c path/to/config ... S'il n'est pas explicitement donné sur la ligne de commande, la querelle recherchera un fichier nommé .squabblerc aux endroits suivants (dans l'ordre):
./.squabblerc(git_repo_root)/.squabblerc~/.squabblerc La configuration peut également être appliquée au niveau du fichier en utilisant des commentaires de ligne SQL dans le formulaire -- squabble-enable:RuleName ou -- squabble-disable:RuleName .
Par exemple, pour désactiver RuleA et activer RuleB juste pour un fichier, cela pourrait être fait:
-- squabble-disable:RuleA
-- squabble-enable:RuleB config=value array=1,2,3
SELECT email FROM users WHERE ...; Pour empêcher la querelle d'exécuter sur un fichier, utilisez -- squabble-disable . Notez que cela désactivera également la vérification de la syntaxe. Notez que ce drapeau aura la priorité sur tout autre ensemble de configuration sur la ligne de commande ou dans le reste du fichier.
{
"reporter" : " color " ,
"plugins" : [
" /some/directory/with/custom/rules "
],
"rules" : {
"AddColumnsDisallowConstraints" : {
"disallowed" : [ " DEFAULT " , " FOREIGN " , " NOT NULL " ]
}
}
} squabble n'est bien sûr pas le premier outil de cet espace. Si cela ne correspond pas à vos besoins, considérez l'un de ces outils:
SELECT que sur les migrations.Ce projet ne serait pas possible sans:
L'image de logo utilisée dans la documentation est créée par Gianni - Dolce Merda du projet Noun.