Как я могу вернуть все строки из моей базы данных - PullRequest
0 голосов
/ 03 апреля 2019

Мне нужно создать функцию в Python, которая возвращает все строки в моей базе данных sqllite.

Я создал эту функцию, но она возвращает только первую строку моей таблицы.

import sqlite3
def data_provider():
    conn = sqlite3.connect('MainDatabase.db')
    cur = conn.cursor()
    sqlstr = 'SELECT * FROM Products_table'
    for row in cur.execute(sqlstr):
        return row
print(data_provider())

1 Ответ

2 голосов
/ 03 апреля 2019

Вы получаете только одну возвращаемую строку, потому что ваш код буквально возвращает первый результат генератора строк:

import sqlite3
def data_provider():
    conn = sqlite3.connect('MainDatabase.db')
    cur = conn.cursor()
    sqlstr = 'SELECT * FROM Products_table'
    for row in cur.execute(sqlstr):
        return row                     # <- This is the one row you're returning because 'return' is causing execution to leave the loop
print(data_provider())

Если вы хотите вернуть все строки в виде списка Python, вы можетеМетод fetchall () для курсора выглядит так:

import sqlite3
def data_provider():
    conn = sqlite3.connect('MainDatabase.db')
    cur = conn.cursor()
    sqlstr = 'SELECT * FROM Products_table'
    cur.execute(sqlstr)
    return cur.fetchall()
print(data_provider())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...