التقاط هجرات 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 ... إذا لم يتم تقديمها بشكل صريح على سطر الأوامر ، فسيبحث Vegably عن ملف يسمى .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 من مشروع الاسم.