Jython, consulta várias colunas dinamicamente
Pergunta
Eu estou trabalhando com um banco de dados Oracle e Jython.
posso obter dados retirados do banco de dados não há problema.
results = statement.executeQuery("select %s from %s where column_id = '%s'", % (column, table, id))
Esta multa funciona se eu quero puxar uma coluna de dados.
Digamos que eu queria laço jogou uma lista como esta:
columns = ['column1', 'column2', 'column3', 'column4', 'column5']
Assim, a consulta acabou parecendo assim:
results = statement.executeQuery("select %s, %s, %s, %s, %s from %s where column_id = '%s'", % (column1, column2, column3, column4, column5, table, id))
Como eu poderia fazer isso?
A razão de eu querer achive isso é porque eu pode querer puxar 6 ou 7 colunas e eu gostaria de armazenar consultas diferentes em um arquivo externo.
Espero que você entenda o que quero dizer. Se não vou tentar palavra re-lo da melhor forma que posso.
Felicidades
Arthur
Solução
Você poderia simplesmente substituir todas as colunas em sua consulta como uma única corda, como esta:
columns = ['column1', 'column2', 'column3', 'column4', 'column5']
results = statement.executeQuery("select %s from %s where column_id = '%s'" % (",".join(columns), table, id))
A propósito, este é não proteger contra injeção de SQL, então eu estou supondo que as colunas, tabelas e entradas de identificação são ou higienizado gerado pelo programa.