squabble
v1.4.0
捕获不安全的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 ...如果在命令行上没有明确给出,则挑剔会在以下位置(按顺序)寻找名为.squabblerc的文件:
./.squabblerc(git_repo_root)/.squabblerc~/.squabblerc还可以通过使用表格中的SQL线注释来应用配置-- 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而不是迁移的陈述。没有以下项目是不可能的:
文档中使用的徽标图像由名词项目的Gianni -Dolce Merda创建。