Как может я символы ESC в SQLite через оболочку удара?

Избегайте python setup.py test и tests_require, это старая фраза "особенность".

Это просто загружает тестовые файлы в директорию установки проекта, что редко случается с разработчиком! Это не очень хорошо работает в современных рабочих процессах CI с виртуальными средами, где вы хотите, чтобы ваши зависимости были установлены в пакетах сайта.

Рекомендованный способ сделать это с помощью setuptools в наши дни - с помощью тега extras_require. . См. здесь для примера.

6
задан Dan Lew 19 April 2009 в 22:07
поделиться

2 ответа

Проблема с решением MarkusQ состоит в том, чтобы знать, какие символы являются специальными в двойных кавычках - их довольно много, в том числе обратные тики, открывающие скобки доллары, долларовые переменные и т. д.

Я бы посоветовал заключить строку в одинарные кавычки; затем каждая отдельная кавычка внутри строки должна быть заменена на кавычку последовательности, обратную косую черту, кавычку, кавычку:

sqlite3.bin contacts.db 'select * from contacts
      where source = "Nancy'\''s notes"'

Первая кавычка в замене завершает текущую строку в одинарных кавычках; кавычка с обратной косой чертой представляет буквальную одинарную кавычку, а последняя кавычка начинает новую строку в одинарных кавычках. Кроме того, это работает с оболочками Bourne, Korn, Bash и POSIX в целом. (C Shell и производные имеют более сложные правила, требующие обратной косой черты, чтобы избежать перевода строки и т. Д.)

11
ответ дан 8 December 2019 в 18:41
поделиться

Если bash - ваша единственная проблема, заключите все это в двойные кавычки, а затем избегайте всего особенного в двойных кавычках bash с одной обратной косой чертой. Например:

sqlite3.bin contacts.db "select * from contacts where source = \"Nancy's notes on making \$\$\$\""
1
ответ дан 8 December 2019 в 18:41
поделиться