如何从数据库中返回所有行

问题描述 投票:0回答:1

我需要在python中创建一个函数,它返回我的sqlite数据库中的所有行。

我创建了这个函数,但它只返回我表的第一行。

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())
database python-3.x sqlite
1个回答
2
投票

您只返回一行,因为您的代码实际上是返回行生成器的第一个结果:

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())
© www.soinside.com 2019 - 2024. All rights reserved.