Fangen Sie unsichere SQL -Migrationen.
$ 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.
...Streit kann auch in Ihren Editor integriert werden, um Fehler in SQL -Dateien zu fangen.
$ echo ' SELECT * FROM WHERE x = y; ' | squabble --reporter=plain
stdin:1:15 CRITICAL: syntax error at or near "WHERE"Derzeit konzentrierten sich die meisten Regeln auf Postgres und seine Macken. Streit kann jedoch alle ANSI SQL analysieren und neue Regeln, die spezifisch für andere Datenbanken sind, werden geschätzt!
$ pip3 install squabble
$ squabble --helpNotiz
Streit wird nur auf Python 3.5+ unterstützt
Wenn Sie aus Quelle installieren möchten:
$ git clone https://github.com/erik/squabble.git && cd squabble
$ python3 -m venv ve && source ve/bin/activate
$ python setup.py install
$ squabble --help Versuchen Sie es, um eine Liste von Regeln zu sehen
$ squabble --list-rulesDann, um mehr ausführliche Informationen zu einer Regel anzuzeigen (z. B. Begründung und Konfigurationsoptionen)
$ squabble --show-rule AddColumnDisallowConstraintsSobald eine Konfigurationsdatei vorhanden ist, kann sie explizit in die Befehlszeile übergeben oder automatisch nachschlagen.
$ squabble -c path/to/config ... Wenn nicht explizit in der Befehlszeile angegeben, sucht Quabble nach einer Datei namens .squabblerc an den folgenden Stellen (in der Reihenfolge):
./.squabblerc(git_repo_root)/.squabblerc~/.squabblerc Die Konfiguration kann auch auf der Dateiebene angewendet werden, indem SQL-Zeilen-Kommentare in Form verwendet werden -- squabble-enable:RuleName oder -- squabble-disable:RuleName .
Zum Beispiel könnte dies getan werden, um RuleA zu deaktivieren und RuleB zu aktivieren, sondern auch für eine Datei:
-- squabble-disable:RuleA
-- squabble-enable:RuleB config=value array=1,2,3
SELECT email FROM users WHERE ...; Um zu verhindern, dass Streit in einer Datei läuft, verwenden Sie -- squabble-disable . Beachten Sie, dass dies auch die Syntaxprüfung deaktiviert. Beachten Sie, dass dieses Flag Vorrang vor einem anderen in der Befehlszeile oder im Rest der Datei festgelegten anderen Konfigurationseinstellungen hat.
{
"reporter" : " color " ,
"plugins" : [
" /some/directory/with/custom/rules "
],
"rules" : {
"AddColumnsDisallowConstraints" : {
"disallowed" : [ " DEFAULT " , " FOREIGN " , " NOT NULL " ]
}
}
} squabble ist natürlich nicht das erste Werkzeug in diesem Bereich. Wenn es nicht Ihren Anforderungen entspricht, sollten Sie eines dieser Tools in Betracht ziehen:
SELECT Aussagen als auf Migrationen.Dieses Projekt wäre nicht möglich ohne:
Das in der Dokumentation verwendete Logo -Bild wird von Gianni - Dolce Merda aus dem NOUN -Projekt erstellt.