无法在python上显示sqlite3数据

时间:2016-01-08 12:25:07

标签: python tkinter sqlite

我想在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))

1 个答案:

答案 0 :(得分:0)

在游标对象上调用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"))]