2009-01-14 4 views
1

Je travaille avec une base de données Oracle et Jython.Jython, requête de plusieurs colonnes dynamiquement

Je peux obtenir des données extraites de la base de données sans problème.

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

Cela fonctionne très bien si je veux tirer une colonne de données.

dit que je voulais faire une boucle jeté une liste comme ceci:

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

Ainsi, la requête a fini par ressembler à ceci:

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

Comment pourrais-je faire cela?

La raison pour laquelle je veux faire ceci est parce que je peux vouloir tirer 6 ou 7 colonnes et je voudrais stocker différentes requêtes dans un fichier externe.

J'espère que vous comprenez ce que je veux dire. Sinon, je vais essayer de le reformuler du mieux que je peux.

Vive

Arthur

Répondre

3

Vous pouvez simplement remplacer toutes les colonnes dans votre requête comme une seule chaîne, comme ceci:

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

D'ailleurs, ce ne protège pas contre SQL injection, donc je suppose que les entrées des colonnes, des tables et des id sont générées par le programme ou désinfectées.

+0

Bravo qui fonctionne très bien! – RailsSon

Questions connexes