Python:在字符串周围插入双引号或单引号
Posted
技术标签:
【中文标题】Python:在字符串周围插入双引号或单引号【英文标题】:Python: inserting double or single quotes around a string 【发布时间】:2011-01-27 04:44:06 【问题描述】:我正在使用 python 访问 mysql 数据库,并且由于变量周围没有引号,我在字段中得到了一个未知列。
代码如下:
cur = x.cnx.cursor()
cur.execute('insert into tempPDBcode (PDBcode) values (%s);' % (s))
rows = cur.fetchall()
如何在 s 的值周围手动插入双引号或单引号?
我尝试使用str()
并在s
周围手动连接引号,但它仍然不起作用。
sql 语句工作正常 iv 双重和三重检查我的 sql 查询。
【问题讨论】:
【参考方案1】:如果这纯粹是一个字符串处理问题,答案就是把它们放在字符串中:
cur.execute('insert into tempPDBcode (PDBcode) values ("%s");' % (s))
这就是 Python 支持这两种引号的经典用例。
但是,正如其他答案和 cmets 所指出的那样,在这种情况下存在与 SQL 相关的特定问题。
【讨论】:
虽然SQL在字符串周围指定了单引号,所以这里的单引号和双引号应该互换 @Ian - 谢谢,不知道 SQL。显然我没有正确理解!我已经进行了相应的编辑。 如果您关心 SO 徽章,我相信通过在 -3 处删除此答案,您最终会获得“同行压力”徽章。【参考方案2】:如果您使用数据库 API,Python 会自动为您执行此操作:
cur = x.cnx.cursor()
cur.execute('insert into tempPDBcode (PDBcode) values (%s)',s)
使用 DB API 意味着 python 将判断是否使用引号,也意味着您不必担心 SQL 注入攻击,以防您的 s
变量恰好包含,例如,
value'); drop database; '
【讨论】:
【参考方案3】:您不应该使用 Python 的字符串函数来构建 SQL 语句。您冒着留下 SQL 注入漏洞的风险。你应该这样做:
cur.execute('insert into tempPDBcode (PDBcode) values (%s);', s)
注意逗号。
【讨论】:
以上是关于Python:在字符串周围插入双引号或单引号的主要内容,如果未能解决你的问题,请参考以下文章