execute或字符串%s传递的查询参数之间的差异

2024-09-30 05:16:30 发布

您现在位置:Python中文网/ 问答频道 /正文

有人建议我使用以下代码:

query = 'Select "logtext" from log where jobid = %s;'
cursorErrorData.execute(query, str(row[0]))

而不是用这个:

query = 'Select "logtext" from log where jobid = %s;' % str(row[0])
cursorErrorData.execute(query)

我使用了第一个示例,它运行良好,但在这个示例中它崩溃了

str(行[0])检索的数据如下:

3090

这是个例外:

not all arguments converted during string formatting

有人能给我解释一下这两种方法的区别吗?为什么在这种情况下,我不能使用它


Tags: 数据代码fromlog示例executewherequery
2条回答

您需要在cursor.execute的第二个参数中传递一个元组

例如:

query = 'Select "logtext" from log where jobid = %s;'
cursorErrorData.execute(query, (str(row[0],))    # >tuple (str(row[0],)

execute的第二个参数应该是一系列参数。如果您提供str(row[0]),那么它将被解释为一个序列,而不是单个参数(字符串是一个字符序列。)

把它包成一个元组

cursorErrorData.execute(query, (str(row[0]),))

相关问题 更多 >

    热门问题