Python 查询和#x27之间的差异;s参数由execute或字符串%s传递
我被建议使用以下代码:Python 查询和#x27之间的差异;s参数由execute或字符串%s传递,python,string,exception,arguments,psql,Python,String,Exception,Arguments,Psql,我被建议使用以下代码: 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) 我使用了第一个示例,它运行良好,但在这个示例中它崩溃了 st
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
这是个例外:
并非所有参数都在字符串格式化期间转换
有人能给我解释一下这两种方法之间的区别,以及为什么在这种特殊情况下,我不能使用它吗?您需要在
游标的第二个参数中传递一个元组
Ex:
query = 'Select "logtext" from log where jobid = %s;'
cursorErrorData.execute(query, (str(row[0],)) #-->tuple (str(row[0],)
您需要在游标的第二个参数中传递一个元组
Ex:
query = 'Select "logtext" from log where jobid = %s;'
cursorErrorData.execute(query, (str(row[0],)) #-->tuple (str(row[0],)
execute
的第二个参数应该是一系列参数。如果您提供str(行[0])
,那么它将被解释为一个序列,而不是一个参数。(字符串是一个字符序列。)
把它包装成一个元组
cursorErrorData.execute(query, (str(row[0]),))
execute
的第二个参数应该是一系列参数。如果您提供str(行[0])
,那么它将被解释为一个序列,而不是一个参数。(字符串是一个字符序列。)
把它包装成一个元组
cursorErrorData.execute(query, (str(row[0]),))