0

我对 SQLite 和 Python 还很陌生,遇到了一些困惑。我试图返回列中包含子字符串的所有元素,该子字符串作为 Python 中的变量传递给函数。我的代码正在运行,但它返回的是空结果而不是正确的结果。

这是具有通用名称的代码:

def myFunc(cursor,myString):
    return cursor.execute("""select myID from Column where name like '%'+?'%' """,(myString,))

就像我说的那样,代码确实运行没有错误,但返回一个空结果,而不是我知道它应该是的结果。我假设这与我使用通配符和/或问号有关,但我不能确定。有人有想法么?提前感谢您的时间/帮助!此外,这是我的第一篇文章,所以如果我错过了任何推荐的提问协议,我提前道歉。

4

2 回答 2

1

好吧,'%'+?'%'绝对行不通——你试图+在左边连接,但没有运算符……</p>

如果操作正确,您可以计算LIKE-search 字段 — 在本例中为 <code>'%'+?+'%'。这将导致某些数据库出现问题(从不工作到进行效率较低的搜索),但是,至少根据 CL. 的评论,sqlite3 会很好。

但最简单的做法是只替换一个完整的参数,而不是一个参数的一部分。您可以%输入参数,它会被很好地解释。所以:

return cursor.execute("""select myID from Column where name like ?""",
                      ('%'+myString+'%',))

这还有一个好处,如果您想搜索初始子字符串 ( 'foo%'),它将是相同的 SQL 语句,但具有不同的参数。

于 2013-10-05T05:17:59.600 回答
-2

试试这个:

def myFunc(cursor,myString):
    return cursor.execute('select myID from Column where name like "{0}"'.format(myString))
于 2013-10-05T05:09:36.847 回答