@gonchar0ff

Как вывести все данные из таблицы при помощи Python (SQLite)?

Всем здравствуйте!
Условно говоря, есть база данных, выглядящая следующим образом:
ID product_name price shop
1 Хлеб 23 У дома
2 Молоко 50 Восьмерочка
3 Кефир 30 У Петровича

Пытаюсь написать функцию, которая будет выводить ID и product_name

def get_all(): 
    cur.execute('SELECT * FROM product_table')
    rows = cur.fetchall()
    for row in rows:
        name = str(row[1])
        id = str(row[0])
        return name, id

Но выводит только первую строку: "1 Хлеб". Если вместо
return name, id
написать
print(name,id)
то выводит все строки, но последняя строка None, что по идее логично, ведь в функции не прописано return, а значит она по умолчанию возвращает None.

Что я упускаю из вида?
  • Вопрос задан
  • 1740 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
то выводит все строки, но последняя строка None

Какая последняя? Если сделать print(get_all()) что ли

Либо возврщайте fetchall() и уже работайте с ним (тогда непонятно зачем существует функция), либо сразу формируйте нужные данные в нужном варианте и возвращайте, как то так:
def get_all():
    records = []
    cur.execute('SELECT * FROM stocks')
    rows = cur.fetchall()
    for row in rows:
        records.append({'name': str(row[1]), 'id': str(row[0])})
    return records
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yupiter7575
@yupiter7575
Python программист
Когда вызывается return функция останавливается и возвращает значение. return в цикле - грех
Ответ написан
Ваш ответ на вопрос

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

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