将函数的SQL结果作为数组返回(Return SQL result from function as array)

由于查询返回多于1个结果,所以在Get_results类中,如何将data_out作为数组返回,以迭代查询结果?

import psycopg2 import sys class Get_results(): def db_call(self,query,dbHost,dbName,dbUser,dbPass): try: con = None con = psycopg2.connect(host=dbHost, database=dbName, user=dbUser, password=dbPass) cur = con.cursor() cur.execute(query) data = cur.fetchall() for data_out in data: return data_out except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1) finally: if con: con.close() sql = " some sql " w = Get_results() for i in w.db_call(sql, dbHost, dbName, dbUser, dbPass): print "The result is : " + i

对于附加信息,如果我在data = cur.fetchall()后立即添加print data我得到结果:

[('The_Galaxy', 'The_Galaxy:star'), ('The_Galaxy', 'The_Galaxy:planet')]

Since the query returns more than 1 result, at the Get_results class how could i return the data_out as an array in order to iterate on the results of the query?

import psycopg2 import sys class Get_results(): def db_call(self,query,dbHost,dbName,dbUser,dbPass): try: con = None con = psycopg2.connect(host=dbHost, database=dbName, user=dbUser, password=dbPass) cur = con.cursor() cur.execute(query) data = cur.fetchall() for data_out in data: return data_out except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1) finally: if con: con.close() sql = " some sql " w = Get_results() for i in w.db_call(sql, dbHost, dbName, dbUser, dbPass): print "The result is : " + i

For aditional info, when if i add print data right after data = cur.fetchall() i have the result:

[('The_Galaxy', 'The_Galaxy:star'), ('The_Galaxy', 'The_Galaxy:planet')]

最满意答案

import psycopg2 import sys class Get_results(): def db_call(self,query,dbHost,dbName,dbUser,dbPass): try: con = None con = psycopg2.connect(host=dbHost, database=dbName, user=dbUser, password=dbPass) cur = con.cursor() cur.execute(query) data = cur.fetchall() resultList = [] for data_out in data: resultList.append(data_out[1]) return resultList except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1) finally: if con: con.close() sql = " some sql " w = Get_results() for i in w.db_call(sql, dbHost, dbName, dbUser, dbPass): print "The result is : " + i import psycopg2 import sys class Get_results(): def db_call(self,query,dbHost,dbName,dbUser,dbPass): try: con = None con = psycopg2.connect(host=dbHost, database=dbName, user=dbUser, password=dbPass) cur = con.cursor() cur.execute(query) data = cur.fetchall() resultList = [] for data_out in data: resultList.append(data_out[1]) return resultList except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1) finally: if con: con.close() sql = " some sql " w = Get_results() for i in w.db_call(sql, dbHost, dbName, dbUser, dbPass): print "The result is : " + i

更多推荐