如何从python中的两个函数中减去值

时间:2017-03-24 16:01:18

标签: python database python-3.x sqlite

我有两个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'

如果有更简洁的方法,请以任何方式提供帮助。

2 个答案:

答案 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