Перебор таблиц в sqlite3 PyQt5 setQuery на python?
Есть база данных sqlite3 с большим количеством таблиц, в каждой таблице разное количество столбцов и записей. Уникального id нет. Нужно обойти все таблицы и вывести определённое значение. Запрос через PyQT5 setQuery что бы можно было вывести найденные значения в форму.
Но загвоздка! Запрос в конкретную таблицу '_1_04_YKR_ON_UT_20_069' работает:
line_for_search = '1-3301-GA-006-1-A17-HC'
con = QSqlDatabase.addDatabase('QSQLITE')
con.setDatabaseName(r'C:\Users\asus\PycharmProjects\YKR\YKR\reports_db.sqlite')
for i in con.tables():
sqm.setQuery('SELECT * FROM _1_04_YKR_ON_UT_20_069 WHERE Line="{}"'.format(line_for_search),
db=QSqlDatabase('reports_db.sqlite'))
Если же заменить номер таблицы на переменную i:
sqm.setQuery('SELECT * FROM {} WHERE Line="{}"'.format(i, line_for_search),
db=QSqlDatabase('reports_db.sqlite'))
то не работает.
Почему так? Любые формы форматирования (?, f-строка, format, &s) не помогают.
import sqlite3
con = sqlite3.connect(r'C:\Users\asus\PycharmProjects\YKR\YKR\reports_db.sqlite')
cur = con.cursor()
line_for_search = '1'
for tablename in cur.execute("select name from sqlite_master where type = 'table'"):
print('SELECT * FROM {} WHERE Line="{}"'.format(tablename[0], line_for_search))
Нашёл ошибку. Перебор таблиц через цикл for работает. При переборе всех таблиц в форме отображались данные из последней. Т.е. в моём случае с данными по умолчанию - пусто. Надо изменить логику алгоритма.