我构造了一个sql查询
query_ = f'NSERT INTO {entity} (id, link, name, country_id) SELECT {key}, "{value}", "{row[0]}", id FROM countries WHERE name = "{row[1]}";'
row = []是包含两个字符串的列表的列表
在某个时刻,我得到行[0] = '某个单词' somename ''
我的变量变成了
query_ = f'NSERT INTO wineries (id, link, name, country_id) SELECT 30052, "someword-somename", "Someword "somename"", id FROM countries WHERE name = "France";'
i得到错误mariadb.ProgrammingError: You have an error in your SQL syntax;
我高兴地将查询公式更改为:
query_ = f"INSERT INTO {entity} (id, link, name, country_id) SELECT {key}, '{value}', '{row[0]}', id FROM countries WHERE name = '{row[1]}';"
下一次得到row[0] = Château La Chouette d'Or,我再次得到错误
第一个想法是这样的:
try:
query_ = f"bla-bla-bla"
myfunction(query_)
except:
query_ = f'bla-bla-bla'
myfunction(query_)
- 但也许有一个标准的,更漂亮的解决方案来处理这样的字符串,我发明了一个轮子?*
2条答案
按热度按时间prdp8dxp1#
为了避免可能的SQL注入以及需要转义的特殊字符的替换问题,方法是在执行语句时替换参数:
eanckbw92#
如果使用Python3+,请使用**""“**。
示例:-
通过用“"”将字符串括起来,可以在字符串中使用任何字符(符号)。