2017-09-24 75 views
1

我有2個表格,「vector」和「vocab」。我試圖做到這一點:從多個表中選擇sqlite3

c.execute('SELECT value FROM vector WHERE word IN (SELECT word FROM vocab)') 

,我發現了錯誤sqlite3.OperationalError: no such table: vocab當然,這是因爲我還沒有連接到詞彙表。我只連接到向量表之前:

dbname = "/Users/quantumjuker/NLP/vector.db" 
conn = sqlite3.connect(dbname) 
c = conn.cursor() 

我怎樣才能連接到詞彙表以及所以我沒有收到錯誤?

謝謝!

+0

'vocab'表是否真的存在?這是錯誤消息要求您檢查的內容。你不需要連接到一個表,而是一個_database_。 'vocab'表與'vector'表在同一個數據庫中嗎? –

+0

在包含我所有代碼的文件夾中,我有一個vector.db文件和一個vocab.db文件,因此它看起來像是在單獨的數據庫中。 – dvn

+1

在這裏檢查:https://stackoverflow.com/questions/6824717/sqlite-how-do-you-join-tables-from-different-databases ...不知道如何從Python做到這一點。 –

回答

0

因此,SQLite3有能力讀取其他SQLite數據文件。這是通過使用ATTACH命令完成的。關於它的好處是,它被用作sql查詢。所以,你做這樣的事情:

c.execute("ATTACH 'vocab.db' AS 'vocabulary'"); 

注意AS別名數據庫的名稱,而不是表的名稱。完成此操作後,您還可以針對vocab表運行查詢。