Есть ли способ запустить сохраненный SQL-запрос из Python (используя cx_Oracle)?

Я использую cx_Oracle для выполнения SQL-запросов к базе данных Oracle в Python. До сих пор я вставлял эти запросы в строки, а затем запускал их с помощью функции cursor.execute(), поставляемой с cx_Oracle:

#simple example
query = """SELECT *
           FROM my_table"""
cursor.execute(query)

Однако мои запросы на выборку стали довольно сложными, и код начинает выглядеть немного запутанным. Мне было интересно, есть ли способ просто сохранить код SQL в файл .sql и чтобы Python или cx_Oracle вызывали этот файл? Я думал, что что-то подобное можно легко найти с помощью Google, но мои поиски, как ни странно, заканчиваются ничем.


person Matthew Neuteboom    schedule 24.10.2013    source источник
comment
.sql — это просто текстовые файлы, а SQL-запросы в Python — это просто строки, поэтому ничто не мешает вам читать запросы из отдельного файла в Python.   -  person Martijn Pieters    schedule 24.10.2013


Ответы (1)


Ну, вы, конечно, можете сохранить код SQL в файл и загрузить его:

query = open('foo.sql', 'r').read()
cursor.execute(query)

Я не могу найти ссылки на сохраненные запросы в cx_Oracle, так что это может быть вашим лучшим выбором.

person Christian Ternus    schedule 24.10.2013
comment
Это действительно все, что я искал. Я предположил, что есть какое-то простое решение, которое я упустил из виду. Для справки, я использую следующий код: with open(file_name.sql) as f: query = f.read() cursor.execute(query), поскольку with будет правильно обрабатывать исключения, а также закрывать файл. - person Matthew Neuteboom; 24.10.2013