Jython, динамически запрашивает несколько столбцов
Вопрос
Я работаю с базой данных 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 столбцов, и я хотел бы сохранить разные запросы во внешнем файле.
Я надеюсь, вы понимаете, что я имею в виду.Если нет, я постараюсь перефразировать это как можно лучше.
Ваше здоровье
Артур
Решение
Вы могли бы просто подставить все столбцы в свой запрос в виде одной строки, вот так:
columns = ['column1', 'column2', 'column3', 'column4', 'column5']
results = statement.executeQuery("select %s from %s where column_id = '%s'" % (",".join(columns), table, id))
Кстати, это не защищает от внедрения SQL, поэтому я предполагаю, что входные данные столбцов, таблицы и идентификаторов сгенерированы программой или очищены.