Peewee execute_sql包含转义字符

时间:2016-02-16 23:48:58

标签: python peewee

我写了一个有一些字符串替换的查询。我正在尝试更新表格中的网址,但网址中包含导致tuple index out of range exception的%符号。

如果我打印查询并手动运行它可以正常工作,但通过peewee会导致问题。我怎么能绕过这个?我猜这是因为百分号?

query = """
    update table 
      set url = '%s'
     where id = 1
""" % 'www.example.com?colour=Black%26white'
db.execute_sql(query)

2 个答案:

答案 0 :(得分:3)

您目前共享的代码非常不安全,可能与导致您的错误的原因相同。请不要在生产中使用它,否则你将被黑客攻击。

通常:您几乎不想使用if%+等常规字符串操作来构造SQL查询。相反,您应该使用SQL API / ORM的特定内置方法为查询提供动态值。在你的peewee的SQLite中,看起来像这样:

.format()

数据库引擎会自动处理您数据中的任何特殊字符,因此您不必担心它们。如果您发现自己在数据中遇到特殊字符问题,则表明存在某种安全问题非常强大警告标志。

在peewee的文档的Security and SQL Injection部分中提到了这一点。

答案 1 :(得分:-2)

你在做什么? Peewee支持更新。

Table.update(url=new_url).where(Table.id == some_id).execute()