Не решает проблему - если пользователь пропустит строку, он все равно потерпит неудачу.

я есть функция, которая получает список таблиц БД в качестве параметра и возвращает командную строку, которая будет выполнена для этих таблиц, например:

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, потому что это нарушает соглашение типа утки.

Есть идеи?

Адам

Ответы на вопрос(4)

Ваш ответ на вопрос