我使用PyTelegramBotAPI包并使用@ bot.callback_query_handler()来处理来自用户的回调查询。然后,我创建了一个函数,使用以下代码打印出该特定用户的数据库中的最后一个条目:
def splitbill(user):
row = c.execute('SELECT * FROM database WHERE user = (?) ORDER BY datetime DESC LIMIT 1', user).fetchall()
print(row[0])
返回并返回错误,指出ValueError:参数属于不受支持的类型
def splitbill(user):
row = c.execute('SELECT * FROM database WHERE user = (?) ORDER BY datetime DESC LIMIT 1', (user,)).fetchall()
print(row[0])
r'SELECT * FROM database WHERE user = (?) ORDER BY datetime DESC LIMIT 1'
'SELECT * FROM database WHERE user = {} ORDER BY datetime DESC LIMIT 1'.format(user)
有效的原因(user,)是因为该execute方法期望一个元组,当你(user)没有逗号传递时,python只是将其解释为user。
你可以在python shell中快速验证这个:
a = 'howdy'
tuple = (a, ) # note the comma
not_a_tuple = (a) # note the lack of commaprint(tuple)
('howdy',)
print(not_a_tuple)
howdy
type(tuple)
type(not_a_tuple)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。