Sqlite

使用 python 比較 Sqlite 3 中的多個表:

  • March 28, 2019

我對 SQLITE3 和 python 都很陌生。我正在做一個項目,我有一個數據庫,裡面有大約 20 個表。一個表用於使用者輸入,其他表預載入了值。我希望能夠將預載入表中的哪些值與使用者表進行比較和匹配。例如:這是範例表的連結 在此處輸入圖像描述

現在,我希望能夠將預載入表中的每一行與使用者表中的每一行進行比較。它們都有共同的 Barcode 列,以便能夠進行比較。因此,在查詢過程中,它應該檢查每一行: 1234 - milk - 1(那些列相等) 5678 - butter - 1(那些列相等) 9876 - sugar - 1(那些列相等) 1100 - - 1(使用者表中不存在此條碼)

因此,當條碼(在本例中為 1100)在使用者表中不存在時,程式碼應列印:您沒有預載入表的所有項目。

到目前為止,我有這個:

import sqlite3 as sq


connect = sq.connect('Food_Data.db')
con = connect.cursor()

sql = ("SELECT Users_Food.Barcode, Users_Food.Item,     Recipe1.Ham_Swiss_Omelet FROM Users_Food INNER JOIN Recipe1 ON Users_Food.Barcode = Recipe1.Barcode WHERE Recipe1.Ham_Swiss_Omelet = '1'")
con.execute(sql)
data = con.fetchall()
print("You can make: Ham Swiss Omelet")
formatted_row = '{:<10} {:<9} {:>9} '
print(formatted_row.format("Barcode", "Ingredients", "Availability"))
for row in data:
   print(formatted_row.format(*row))
   #print (row[:])
   #connect.commit()

我想到了。我能夠執行 FULL OUTER JOIN 來顯示一個表中缺少但包含在另一個表中的內容。

SELECT d.type,
        d.color,
        c.type,
        c.color
FROM dogs d
LEFT JOIN cats c USING(color)
UNION ALL
SELECT d.type,
        d.color,
        c.type,
        c.color
FROM cats c
LEFT JOIN dogs d USING(color)
WHERE d.color IS NULL;

引用自:https://dba.stackexchange.com/questions/232471