ich eine Funktion, die eine Liste von DB-Tabellen als Parameter bekommt und gibt eine Befehlsfolge auf diesen Tabellen ausgeführt werden, zB:Pythonic Weise Parameter zu überprüfen, ist eine Sequenz, aber nicht String
pg_dump(file='/tmp/dump.sql',
tables=('stack', 'overflow'),
port=5434
name=europe)
Sollte etwas zurücksenden wie:
pg_dump -t stack -t overflow -f /tmp/dump.sql -p 5434 europe
Dies geschieht mit tables_string='-t '+' -t '.join(tables)
.
Der Spaß beginnt, wenn die Funktion aufgerufen wird, mit: tables=('stackoverflow')
(a string) statt tables=('stackoverflow',)
(ein Tupel), das ergibt:
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
Da die Zeichenfolge selbst wiederholt wird.
This SO question schlägt vor, verwendet auf den Typ, aber ich bin mir nicht sicher, es ist Pythonic genug, weil es die Ducktyp Konvention bricht.
Irgendwelche Einsichten?
Adam
Sie werden einem Benutzer aufgerufene mit '(‚foo‘)' versehentlich statt '(‚foo‘,) ', oder? – orip
@orip Das ist der Punkt: Benutzer könnten diesen Fehler machen, und ich möchte verhindern, dass es passiert. –