Я сохранил некоторые запросы в одном скрипте . sql, вместо того, чтобы писать их непосредственно внутри переменных в скрипте .py .
Теперь я хочу Чтобы прочитать этот сценарий sql, используя Python, разделите каждый оператор sql на точки с запятой, а затем передайте каждый из этих сценариев курсору Psycopg2 для последовательного выполнения.
Кажется, что сценарий python читает файл правильно, но при попытке выполнить операторы выдается ошибка «не удается выполнить пустой запрос».
Возможно, выгода заключается в том, что в этом сценарии sql разбросано много разрывов строк. Заявления в нем написаны так:
DROP TABLE IF EXISTS
target_schema.some_table
;
SELECT
column
FROM
schema.table
;
Вот код python:
import psycopg2
import pathlib
conn = psycopg2.connect(
user=user
,password=password
,host=host
,port=port
,database=database
)
pg_cursor = conn.cursor()
scriptContents = Path('my_folder\my_sql_script.sql').read_text(encoding='utf-8')
sqlStatements = scriptContents.split(sep=';')
for statement in sqlStatements:
try:
pg_cursor.execute(f'{statement}')
conn.commit()
except psycopg2.Error as errorMsg:
print(errorMsg)
conn.rollback()
Может ли кто-нибудь помочь мне решить эту проблему?