Как запустить DDL скрипт с помощью kinterbasdb - PullRequest
1 голос
/ 19 октября 2011

Есть ли способ выполнить сценарий DDL из Python с библиотекой kinterbasdb для базы данных Firebird?

В основном я хотел бы повторить команду 'isql -i myscript.sql'.

1 Ответ

2 голосов
/ 20 октября 2011

Прошло много времени с тех пор, как я использовал kinterbasdb, но, насколько я знаю, вы сможете сделать это с любой командой запроса, которая также может быть использована для INSERT, UPDATE и DELETE (то есть, ничего, что создает результат).Поэтому Connection.execute_immediate и Cursor.execute должны работать.

Вы действительно пытались это сделать?

Кстати: в Firebird желательно не смешивать DDL и DML в одной транзакции.

РЕДАКТИРОВАТЬ:
Я только что понял, что вы могли иметь в виду полный сценарий DDL с несколькими операторами, если вы это имеете в виду, то: нет, вы не можете, вам нужно выполнять каждый оператор по отдельности.

Возможно, вы сможете использовать инструкцию EXECUTE BLOCK, но вам может понадобиться изменить ваш скрипт настолько, что будет проще просто попытаться разделить реальный скрипт на отдельные операторы.

...