create table не видит схему, созданную в том же вызове execute () - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь выполнить следующее для базы данных Redshift:

create schema foo;
create table foo.bar(baz integer);

... используя cursor.execute().Оператор create table завершается неудачно, жалуясь на то, что схема не существует:

ProgrammingError: schema "foo" does not exist

Когда я передаю тот же SQL через клиента, даже в транзакции, они работают как положено.Если это имеет значение, я делаю один вызов cursor.execute() и передаю ему строку "create schema foo;\ncreate table foo.bar(baz integer);"

Когда я делаю два вызова cursor.execute(), один для создания схемы и один для создания таблицы, это также работает как ожидалось.Однако это не идеально, так как у меня большой файл с несколькими операторами DDL;Я надеюсь избежать необходимости разбивать его на отдельные утверждения и вызывать execute() индивидуально для каждого из них.

Есть ли лучший способ выполнить то, что я пытаюсь сделать?

...