我想在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))
答案 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"))]