Jython, динамически запрашивать несколько столбцов - PullRequest
1 голос
/ 14 января 2009

Я работаю с базой данных Oracle и Jython.

Я могу получить данные из базы данных без проблем.

results = statement.executeQuery("select %s from %s where column_id = '%s'", % (column, table, id))

Это прекрасно работает, если я хочу получить один столбец данных.

Скажем, я хотел зациклить, бросил список вроде этого:

columns = ['column1', 'column2', 'column3', 'column4', 'column5']

Итак, запрос в итоге выглядел так:

results = statement.executeQuery("select %s, %s, %s, %s, %s from %s where column_id = '%s'", % (column1, column2, column3, column4, column5, table, id))

Как я мог это сделать?

Причина, по которой я хочу добиться этого, заключается в том, что я могу выбрать 6 или 7 столбцов и сохранить различные запросы во внешнем файле.

Надеюсь, вы понимаете, о чем я. Если нет, я постараюсь перефразировать это как можно лучше.

Приветствия

Arthur

1 Ответ

3 голосов
/ 14 января 2009

Вы можете просто заменить все столбцы в вашем запросе одной строкой, например:

columns = ['column1', 'column2', 'column3', 'column4', 'column5']
results = statement.executeQuery("select %s from %s where column_id = '%s'" % (",".join(columns), table, id))

Кстати, это не защищает от внедрения SQL, поэтому я предполагаю, что входы столбцов, таблиц и идентификаторов генерируются программой или очищаются.

...