gpt4 book ai didi

python - 在Python和sqlite中转义字符

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:45 25 4
gpt4 key购买 nike

我有一个python脚本,可将原始电影文本文件读入sqlite数据库。

我使用re.escape(title)将转义字符添加到字符串中,以使它们在执行插入操作之前是数据库安全的。

为什么这不起作用:

In [16]: c.execute("UPDATE movies SET rating = '8.7' WHERE name='\'Allo\ \'Allo\!\"\ \(1982\)'")
--------------------------------------------------------------------------- OperationalError Traceback (most recent call last)

/home/rajat/Dropbox/amdb/<ipython console> in <module>()

OperationalError: near "Allo": syntax error


但这有效(在两个位置删除了\'):

In [17]: c.execute("UPDATE movies SET rating = '8.7' WHERE name='Allo\ Allo\!\"\ \(1982\)'") Out[17]: <sqlite3.Cursor object at 0x9666e90>


我不知道。我也不能放弃那些引号,因为它们实际上是电影标题的一部分。
谢谢。

最佳答案

你这样做是错的。从字面上看。您应该使用如下参数:

c.execute("UPDATE movies SET rating = ? WHERE name = ?", (8.7, "'Allo 'Allo! (1982)"))


这样,您根本不需要做任何引用,并且(如果这些值来自不受信任的任何人),您(在这里)也将100%安全地免受SQL注入攻击。

关于python - 在Python和sqlite中转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59494051/

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