【问题标题】:Can't display sqlite3 data on python无法在 python 上显示 sqlite3 数据
【发布时间】:2016-01-08 12:25:07
【问题描述】:

我想在 python Tkinter 组合框上显示来自 sqlite3 的特定列,但显示的是<sqlite3.Cursor object at 0x0000000003E73110>,我不知道该怎么办?我不久前才开始编码。

我写如下:

from tkinter import *
from tkinter import ttk
import  sqlite3

conn = sqlite3.connect('Library.db')
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS tablename (Name TEXT UNIQUE NOT NULL)")
combolist = c.execute("SELECT Name FROM tablename")


root = Tk()
ttk.Combobox(root, value = (combolist))

【问题讨论】:

  • 尝试combolist = c.fetchall() 获取调用execute 的结果。

标签: python tkinter sqlite


【解决方案1】:

在游标对象上调用 execute 不会返回值。相反,您可以遍历光标,或调用 c.fetchall() 将所有结果重新组合在一起。

sqlite3 还支持一种简写方式,您可以调用 conn.execute(...) 并直接取回结果而无需使用显式游标,但这需要您在连接上而不是游标上调用 execute

您可能还想从每一行中解压缩名称字段。

我认为这段代码应该可以工作(虽然我还没有测试过):

conn = sqlite3.connect('Library.db')
with conn:
    conn.execute("CREATE TABLE IF NOT EXISTS tablename (Name TEXT UNIQUE NOT NULL)")

...这里假设了更多实际插入一些数据的代码...

with conn:
    combolist = [row["name"] for row in conn.execute("SELECT Name FROM tablename"))]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多