Не решает проблему - если пользователь пропустит строку, он все равно потерпит неудачу.
я есть функция, которая получает список таблиц БД в качестве параметра и возвращает командную строку, которая будет выполнена для этих таблиц, например:
pg_dump( file='/tmp/dump.sql',
tables=('stack', 'overflow'),
port=5434
name=europe)
Должен вернуть что-то вроде:
pg_dump -t stack -t overflow -f /tmp/dump.sql -p 5434 europe
Это сделано с помощьюtables_string='-t '+' -t '.join(tables)
.
Веселье начинается, когда функция вызывается с помощью:tables=('stackoverflow')
(строка) вместоtables=('stackoverflow',)
(кортеж), который дает:
pg_dump -t s -t t -t a -t c -t k -t o -t v -t e -t r -t f -t l -t o -t w
-f /tmp/dump.sql -p 5434 europe
Потому что сама строка повторяется.
Это ТАК вопрос предлагает использовать утверждения типа, но я не уверен, что это достаточно Pythonic, потому что это нарушает соглашение типа утки.
Есть идеи?
Адам