Я пытаюсь использовать python для динамического создания sql.Я использую psycopg2 для postgresql
У меня есть запрос вроде:
SELECT * FROM schema.table_name
Но я хотел бы сделать следующее:
table_name = "some_table"
sql = """SELECT * FROM schema.""" + table_name + """;"""
Когда я пытаюсьпри запуске this выдает ошибку, при печати выдает, что sql окружен 'sql_statememt'
Я использовал php несколько лет назад и нужно было подготовить операторы, чтобы избежать внедрения sql, я предполагаю, что естьПодобная проблема при этом заключается в том, что я бы предпочел не использовать методы {} и% s, поскольку мне иногда нужно выполнять подзапросы.
Предложения приветствуются.
-------------- Редактировать --------------
Так что после еще большего количества поиска / поиска у меня есть это, но есть два набора {} вв этом случае просто случается, что таблицы одинаковы, но приходят из разных схем.Я попытался добавить второй идентификатор, но мне это не понравилось.Итак, как мне различить два набора {}?
table_name = 'name_of_table'
cur.execute(
sql.SQL("""INSERT INTO pc_processing.{}(x,y,z)
SELECT
st_x(PC_EXPLODE(pa)::geometry) as x,
st_y(PC_EXPLODE(pa)::geometry) as y,
st_z(PC_EXPLODE(pa)::geometry) as z
from public.{}
order by x,y,z;"""
).format(
sql.Identifier(table_name)
)
)