我正在尝试在sqlite调用中进行一些数学运算。我有两列要添加其值,然后检查它们是否小于我输入的值。
c = self.db.cursor()
c.execute("BEGIN EXCLUSIVE TRANSACTION");
c.execute("SELECT ID as id,task FROM tube WHERE state=0 OR (state=1 & ts+ttr<? ) ORDER BY ID ASC LIMIT 1", (time.time(),))
task = c.fetchone()
print task
if task != None:
ts = time.time();
c.execute("UPDATE tube SET state=1,ts=? WHERE ID=?", (ts, task['id']))
task['ts'] = ts
else:
task = None
self.db.commit()
return task
从我可以告诉它不做这个操作。它仍然返回一行,但不是基于我提供的逻辑。
答案 0 :(得分:4)
您正在使用按位和运算符&
,您可能需要逻辑AND
。
按位运算符的优先级高于比较(=
,<
),而逻辑运算符的优先级更低。因此,state=1 & ts+ttr<?
与state=1 AND ts+ttr<?