Python Psycopg метод executescript

реализация Python db-api для sqlite имеет удобный метод executescript () для выполнения сценариев SQL с несколькими операторами. Это очень полезно, например, для создания базы данных. См. документация по драйверу sqlite.

Не могу найти аналогичный для драйвера Psycopg db-api для PostgreSQL. Существует ли executescript () в Psycopg? Любая альтернатива?

Спасибо

Пожалуйста, добавьте сюда executescript(sql_script) вместо ссылки на внешнюю ссылку

Morse 24.04.2018 17:37

@CharlesDuffy Хорошо, отлично! Это означает, что я могу выполнить cursor.execute ("оператор sql1; оператор sql2; и т. д.")

Charlie 24.04.2018 17:53

Верный. Добавляем ответ по этому поводу.

Charles Duffy 24.04.2018 18:10
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
437
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам это не нужно - одна строка запроса уже может содержать несколько отдельных запросов.

Цитата из документация по проводному протоколу, выделено мной:

A simple query cycle is initiated by the frontend sending a Query message to the backend. The message includes an SQL command (or commands) expressed as a text string. The backend then sends one or more response messages depending on the contents of the query command string, and finally a ReadyForQuery response message. ReadyForQuery informs the frontend that it can safely send a new command. (It is not actually necessary for the frontend to wait for ReadyForQuery before issuing another command, but the frontend must then take responsibility for figuring out what happens if the earlier command fails and already-issued later commands succeed.)

...и позже:

Since a query string could contain several queries (separated by semicolons), there might be several such response sequences before the backend finishes processing the query string. ReadyForQuery is issued when the entire string has been processed and the backend is ready to accept a new query string.


Таким образом, стандартному вызову cursor.execute() можно дать список отдельных запросов, разделенных точкой с запятой, для выполнения.

Другие вопросы по теме