我在JetBrains PyCharm社区版4.0.4中使用SQLite3和python
我有一张这样的桌子。ID是整数,名称和内容是文本
ID Name Content
1 Matt oirefasd aifsfnib if ib @John sefuhrg wefirwgf
2 John sdfwre frwgfwg wegfhtr @Patsfrwg
3 Pat asjgre wurgjnsow wouregjeo @Johnsfbwufaeovnwo
4 John sfgoe eriogner weogfib
我的问题是, 假设用户John已登录。如何编写sqlite查询,以便在内容列中接收包含以@symbol开头、后跟登录用户(John)的消息的行
我应该以元组的形式接收答案
所以解决办法应该是:
ID Name Content
1 Matt oirefasd aifsfnib if ib @John sefuhrg wefirwgf
3 Pat asjgre wurgjnsow wouregjeo @Johnsfbwufaeovnwo
这是我当前的sql查询。currentuser存储当前登录用户的名称(本例中为John)
str = '%'+ currentuser + '%'
c = db.cursor()
sql = "SELECT id, Name, content FROM myusers WHERE myusers.content LIKE ? LiMIT ?"
c.execute(sql,(str,limit))
return [x[0] for x in c]
我一直收到一个错误,上面写着“int”对象不可下标
上面的代码正在根据我的单元测试语句进行测试。此声明是:
self.assertListEqual([1, 3], [a[0] for a in posts])
如果你仔细看,我被要求返回元组。 以及 如果您查看单元测试语句
assertListEqual([1, 3], [a[0] for a in posts])
,这意味着您正在比较两个列表的值因此,解决方案在于随问题提供的代码
而不是用这个
返回每行的第一个元素。我用这句话:
返回元组
现在,当assert语句应用于返回两个元组的a[0]元素的元组时,在本例中它是[1,3]。测试通过了
你的问题是这样的:
你给我们看的代码里都没有。但是可以想见,
posts
是问题代码返回的列表。而posts
是一个整数列表,就像[1, 3]
,所以每个p
都是一个整数,所以每个p[0]
都会引发一个异常,因为你要求的是1[0]
,这毫无意义我想你只是想要
assertListEqual([1, 3], posts)
相关问题 更多 >
编程相关推荐