У меня есть функция, которая получает список таблиц DB в качестве параметра и возвращает строку команд, которая должна быть выполнена в этих таблицах, например:
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
Поскольку сама строка повторяется.
Этот вопрос SO предлагает использовать утверждения по типу, но я не уверен, что он достаточно Pythonic, потому что он нарушает соглашение типа утки.
Любые идеи?
Адам