当前位置: 首页 > 面试题库 >

SQLite参数替换和引号

弓晔
2023-03-14
问题内容

我有这行工作正常:

c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)

但是我想使用SQLite参数替换而不是字符串替换(因为我在这里看到这更安全)。

这是我的(失败)尝试:

t = (name,)
c.execute('select cleanseq from cleanseqs WHERE newID="?"',t)

但是此行返回

‘提供的装订数量不正确。当前语句使用0,并且提供了1。

因此,我声明的左部分无效。我正在提供一个绑定(名称,以t表示),但似乎没有解析问号(?)。如果删除围绕?的引号,则可以使用。但是我希望这些报价保持不变,因为我记得在某些情况下需要使用这些报价。

所以问题是:如何转换此行:

c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)

问题答案:

关于“”“如果我删除围绕?的引号,则可以。但是我希望将引号保留在那里,因为我记得在某些情况下需要它们。”“”

您自己构建整个SQL语句时所记得的内容是无关紧要的。

新的故事是:用?标记?SQL语句中要替换值的每个位置,然后传入一个包含每个?一个值的元组。-就这么简单;包装器将引用任何字符串以确保它们是可接受的SQL常量。



 类似资料:
  • 本文向大家介绍magento2 参数替换,包括了magento2 参数替换的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 处理或/并扩展变量 ${parameter} 和$parameter是相同的,都是表示变量parameter的值。在一些环境中,使用${parameter}比较不会引起误解. 可以把变量和字符串连接. 1 your_id=${USER}-on-${HOSTNAME} 2 echo "$your_id" 3 # 4 echo "Old \$PATH = $PATH" 5

  • 在我的代码中,我试图获得一个值,该值是使用Spring控制器中的模型属性设置的,然后将其传递给Javascript函数,并将该值设置为URL中的参数。 控制器中的modelAttribute: model.add属性(appName, appName);model.add属性(CloverAppType, CloverAppType); 视图中的javascript: 问题是当appName中包含

  • 我通过方法参考获得了关于用lambda替换的声纳信息。但我必须调用字符串上的方法引用???

  • 我对把两种不同的东西结合在一起有意见。我尝试了很多关于SO的建议,但没有任何效果,因此我发布了我的问题。 所以要求是 我需要在Java中构建动态查询(用于搜索jsonb列类型) 我需要使用准备好的Java语句(避免sql注入) 我需要替换单引号内的参数 CLI中的这个查询非常有效 我想参数化的部分是“金融”。所以当我构建这个查询时 执行时,我得到以下错误 是因为?在单引号内,所以jdbc驱动程序可