2016-01-08 92 views
0

我想在python Tkinter組合框中顯示來自sqlite3的特定列,但顯示的卻是<sqlite3.Cursor object at 0x0000000003E73110>,我不知道該怎麼辦?我剛剛開始編寫代碼。無法在python上顯示sqlite3數據

我寫:

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

嘗試'combolist = c.fetchall()'獲得調用結果到'execute'。 – Duncan

回答

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"))]