gpt4 book ai didi

python-3.x - python字符串格式化需要引用格式说明符,但字符串中有引号

转载 作者:行者123 更新时间:2023-12-01 13:18:04 24 4
gpt4 key购买 nike

我在尝试为 Cassandra 正确格式化查询字符串时遇到问题。我有这个我正在尝试的查询

session.execute("UPDATE query3 SET movietitle = '{:s}' WHERE itemid = {:d} and userid in (1, 2000)".format(cols[1], id))

问题是movietitle的形式可以是 Toy Story (1995)。或 Mr. Holland's Opus (1995) ,所以如果没有引号,括号会导致查询出现问题。但是,单引号也会引起问题,因为电影标题的名称中可以包含引号。有没有一种巧妙的方式来构建这个查询?

最佳答案

不要使用 Python 的内置字符串 format在查询字符串中设置值的函数。这会使您的应用程序面临一系列称为 SQL/CQL 注入(inject)攻击的错误和安全问题。

相反,DataStax Python 驱动程序支持参数化查询。

Session.execute(...) 需要 parameters参数,它允许您指定要替换的值的序列或字典。

例如,您的查询应如下所示:
session.execute("UPDATE query3 SET movietitle = %s WHERE itemid = %s and userid in (1, 2000)", parameters=(cols[1], id))
也考虑使用 prepared statements如果您需要多次执行相同的查询。这些具有性能优势。

关于python-3.x - python字符串格式化需要引用格式说明符,但字符串中有引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52726091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com