Перебрать несколько операторов SQL и сохранить результаты в объекте Python - PullRequest
1 голос
/ 05 апреля 2019

У меня есть текстовый файл, в котором содержится около 100 имен таблиц БД, разделенных новой строкой, и у меня есть функция для возврата этих имен таблиц в список здесь:

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. Явно неверно. Есть идеи?

1 Ответ

2 голосов
/ 05 апреля 2019

Проблема вовсе не в том, чтобы зацикливаться на множестве операторов SQL.Вопрос в том, как получить результат от вызова execute.

. Ответ на этот вопрос заключается в вызове fetchone() на курсоре.Это даст вам кортеж, так что получите первый элемент этого:

a.execute('SELECT count(*) FROM {}'.format(table))
z.append(a.fetchone()[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...