@Hor-Net-TT

Как вывести данные из бд через строки?

Мне нужно получить данные из бд и вывести их через строчку есть подобие кода который не совсем подходит
#
        sqlite_connection = sqlite3.connect('sqlite_python.db')
        cursor = sqlite_connection.cursor()
        sqlite_select_query = """SELECT * from sqlitedb_developers"""
        cursor.execute(sqlite_select_query)
        records = cursor.fetchall()

        for row in records:
            print("ID:", row[0])
            print("Имя:", row[1])
            print("Почта:", row[2])
            print("Добавлен:", row[3])
            print("Зарплата:", row[4], end="\n\n")

Мне нужно это все получить одним return
  • Вопрос задан
  • 147 просмотров
Решения вопроса 2
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Я тоже долго тупил, но потом понял. Скорее всего, человеку требуется аналог fetch_assoc в РНР. То есть словарь, в котором уже есть имена полей, которые не нужно будет писать руками.
sqlite_connection = sqlite3.connect('sqlite_python.db')
sqlite_connection.row_factory = sqlite3.Row
cursor = sqlite_connection.cursor()
sqlite_select_query = """SELECT * from sqlitedb_developers"""
cursor.execute(sqlite_select_query)
records = cursor.fetchall()
records = [dict(row) for row in records]
print(records)

В итоге получится это самое загадочное "все получить одним returnprint" без цикла.
Ответ написан
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Предположим, что часть про SQLite у вас работает как надо и всегда возвращает в row корректный tuple.
Код предполагает, что длина row всегда равна длине ROW_HEADS, это лучше проверять, иначе могут быть ошибки и сбои.

Формально решить задачу можно как-то так, например:
ROW_HEADS = ["ID:", "Имя:", "Почта:", "Добавлен:", "Зарплата:"]


def make_string(row):
    return '\n'.join([f'{key} {value}' for key, value in zip(ROW_HEADS, row)])


if __name__ == '__main__':
    row = (1, 2, 3, 4, 5)
    print(make_string(row))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы