Задать вопрос
@NasherDenn
Инженер NDT PAUT

Перебор таблиц в 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) не помогают.
  • Вопрос задан
  • 552 просмотра
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
LaRN
@LaRN
Senior Developer
Список названий таблиц можно получить так:
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))
Ответ написан
@NasherDenn Автор вопроса
Инженер NDT PAUT
Нашёл ошибку. Перебор таблиц через цикл for работает. При переборе всех таблиц в форме отображались данные из последней. Т.е. в моём случае с данными по умолчанию - пусто. Надо изменить логику алгоритма.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽