Вам нужно использовать два отдельных курсора , чтобы сделать это.Курсор представляет один набор результатов, внутренний c.execute()
очищает набор результатов, который внешний цикл прикрепил к курсору.
Если c
является объектом подключения, вам необходимо явно создать курсоры из этого:
outercursor = c.cursor()
for tablename, in outercursor.execute("SELECT tablename FROM triggers_sql"):
innercursor = c.cursor()
for row in innercursor.execute('SELECT * FROM "{}"'.format(tablename)):
# ...
Если c
является объектом курсора, просто создайте еще один объект из соединения.Вы даже можете сделать это из существующего курсора с помощью:
innercursor = c.connection.cursor()
Обратите внимание, что, вероятно, существуют более эффективные способы структурирования вашей базы данных, когда вам не нужно использовать динамические имена таблиц.Храните все, для чего вы сейчас используете отдельные таблицы, в одной таблице с одним дополнительным столбцом, заменяющим имя таблицы.В этот момент вы можете использовать JOIN
и оставить его на sqlite, чтобы беспокоиться о том, как создать цикл.