我有两个sqlite表,其中包含不同的项目及其数量。我想要做的是遍历第一个表格,从第一个表格中选择数量,然后从第二个表格中与项目名称匹配的数量中减去数量。
(表1)
items | quantity ---------- sugar | 50 Pen | 10 apple | 50 berry | 1
第二个表(由用户输入填充)(表2)
items |quantity ---------- sugar |500 Pen |5 apple |8 berry |1
正如我所说,我想循环通过表1并从表1中获取糖的量。然后循环通过表2并获得表2中的糖量,然后最终减去这些值并返回减法后的值已经执行。然后对table1中的其他项做同样的事情。(循环)
E.g。用糖, (表2中的糖量 - 表1中的糖量) (500 - 50)= 450 然后它返回值450,这样我就可以在其他函数中使用它
代码示例。
import sqlite3
db = sqlite3.connect('example.db')
#db.execute('create table Table1 (items text, quantity integer)')
#db.execute('create table Table2 (items text, quantity integer)')
a = 'Sugar'
b = 50
c = 500
db.execute('insert into Table1 (items, quantity) values(?,?)',(a, b))
db.execute('insert into Table1 (items, quantity) values(?,?)',(a, c))
db.commit()
db.close()
def one():
cursor = db.execute('select items from Table1')
for i in cursor.fetchall():
return i
def two():
cursor1 = db.execute('select quantity from Table1 where items = ?',(one()))
for i in cursor1.fetchall():
return i
def three():
cursor1 = db.execute('select quantity from Table2 where items = ?',(one()))
for i in cursor1.fetchall():
return i
def subtraction():
t = three() - two()
return t
运行上述代码时显示的错误 文件“C:/ Users / MegaMind / Documents / Programming / Pycham Projects / New folder / package.py”,第22行,减法 t =三() - 两() TypeError:不支持的操作数类型 - :'tuple'和'tuple'
如果有更简洁的方法,请以任何方式提供帮助。
答案 0 :(得分:0)
您可以简单地告诉数据库加入两个表:
cursor = db.execute('''SELECT items, Table2.quantity - Table1.quantity
FROM Table1
JOIN Table2 USING (items)''')
for row in cursor:
name = row[0]
diff = row[1]
...
答案 1 :(得分:0)
你做得太难了。 SQL可以自己做,并在银盘中给你结果:
SELECT table1.items, table1.quantity - table2.quantity as remaining
FROM table1 LEFT JOIN table2 ON table1.items = table2.items
LEFT JOIN
确保table1
的所有行都会显示在结果中。如果您只想减少计数,请使用普通JOIN
。