python - python int() 参数必须是字符串,类似于对象或者数字的字节,而不是'tuple'

  显示原文与译文双语对照的内容

因这里我在本节中的代码应该从sql数据库获取一个值,然后将值添加到sql数据库中。


 with sqlite3.connect('aircraft.db') as db:


 c = db.cursor()


 self.flightcount4 = self.flightcount5.get()


 self.flightcount3 = int(self.flightcount4)



 c.execute("SELECT flightcount FROM aircraft WHERE Arrive =?",(self.travelselect.get(),))


 self.total3 = c.fetchone()


 total2 = int(self.total3)


 self.total = total2 + self.flightcount3


 c.execute('UPDATE aircraft SET flightcount = :flightcount WHERE Arrive = :Arrive',{'flightcount':self.flightcount3, 'aircraftpilot':self.pilotname5 })


 db.commit()


 ms.showinfo('Success!', 'its saved!')



这是我的代码。


 Exception in Tkinter callback


 Traceback (most recent call last):


 File"C:UsersadamAppDataLocalProgramsPythonPython36- 


 32libtkinter__init__.py", line 1702, in __call__


 return self.func(*args)


 File"C:A LEVELSComputingatomactual resultsworkingCustomer.py", 


 line 40, in addtocount


 total2 = int(self.total3)


 TypeError: int() argument must be a string, a bytes-like object or a 


 number, not 'tuple'


 [Finished in 30.761s]



这是错误

先谢谢了

时间:

据我所知 c.fetchone() 提取整个行。 即使你只在sql语句中指定一个值,它也将被包装在一个元组中。 如果你尝试打印它,它将看起来像这样:


('flightcount value')



注意在价值周围那些烦人的括号。

因为 int(self.total3) 试图从 c.fetchone() 解析整个 tuple ( 行),所以产生错误的原因是。 相反,你需要从该行中选择特定的列,如下所示:


int(self.total3[0])



...