循环遍历多个SQL语句并将结果存储在Python对象中

问题描述 投票:1回答:1

我有一个文本文件,其中有大约100个DB表名,用新行分隔,我有一个函数在这里返回列表中的表名:

def grab_tables(self):
    table_list = []
    with open('tables.txt', 'r') as file:
        datalines = (line.rstrip('\r\n') for line in file)
        for line in datalines:
            table_list.append(line)
    return table_list

我现在想要连接到数据库,并在所有这些表上执行选择计数(*),并将表名和计数存储在某个python对象(列表,字典,等等)中。到目前为止我所拥有的是:

def run_sql(self):
    s = self.connection_src() #function that connects to Oracle DB
    tables = self.grab_tables()
    a = s.cursor()
    z = []
    for table in tables:            
        a.execute('SELECT count(*) FROM {}'.format(table))
        z.append(a)

    print(z)

这不起作用,因为它将连接细节附加到z。显然不正确。有任何想法吗?

python sql loops
1个回答
2
投票

问题根本不在于循环遍历多个SQL语句。问题是如何通过调用execute获得结果。

答案就是在光标上调用fetchone()。这会给你一个元组,所以得到它的第一个元素:

a.execute('SELECT count(*) FROM {}'.format(table))
z.append(a.fetchone()[0])
© www.soinside.com 2019 - 2024. All rights reserved.