我试图从数据库中的同一行读取2个值,但我只能够一次读取整行。我添加了所有我认为将是相关的代码:如何用sqlite从数据库的同一行读取单个值?
def find(search, term):
# Helper function for the find function.
with connect("GTINb.db") as db:
cursor = db.cursor()
sql = "select * from GTINb where {} = ?".format(search)
cursor.execute(sql,(term,))
db.commit()
results = cursor.fetchall()
new = str(term)
if results:
results = str(results)
temp = open('temp.txt', 'a')
temp.write(results)
temp.write('\n')
temp.close()
with connect("GTINb.db") as db:
cursor.execute("UPDATE GTINb SET stockcur=stockcur-1 WHERE GTIN8=(?)",(new,))
cur = cursor.execute("SELECT stockcur from GTINb by (?)",(new,))
re = cursor.execute("SELECT restock from GTINb by (?)",(new,))
if cur < re:
cursor.execute("UPDATE GTINb SET stockcur=stockcur+10 WHERE GTIN8=(?)",(new,))
return print('More stock has been ordered in as stocks were low')
else:
return
else:
temp = open('temp.txt', 'a')
temp.write('Product not found')
temp.write('\n')
temp.close()
return
我目前得到的错误sqlite3.OperationalError: near "(": syntax error
,并试图取代“(?)”与%s,(%S)和?没有成功,提出以下错误消息:
sqlite3.OperationalError: near "12345670": syntax error // where 12345670 was the input represented by new
sqlite3.OperationalError: near "(": syntax error
sqlite3.OperationalError: near "?": syntax error
是否有另一种方式做到这一点,或者我犯了一个简单的错误?
'(?)'应该是什么意思? “by”只能用作“GROUP BY”或“ORDER BY”的一部分。 – Barmar
所以它将''作为'GRINb'表的别名,它希望在SQL中的那个点处有一个'WHERE'子句(或其他子句),但它会找到'(?)',它不会'没有意义。 – Barmar
@Barmar,by(?)被用来指已经存在于用户输入行中的已知值,以及错误可能在 – Beginner