1 execute(参数一:sql 语句)
- # 锁定当前查询结果行
- cursor.execute("SELECT high, low, vol FROM table_name WHERE symbol = %s FOR UPDATE;"% (symbol,))
2 .format()
cursor.execute("SELECT high, low, vol FROM table_name WHERE symbol = {} FOR UPDATE;".format(symbol))
3 结论
- 使用 .format() 方法拼接 SQL 语句确实能够解决一些 SQL 注入攻击问题,
- 但并不能完全避免 SQL 注入攻击。
- 原因是,.format() 方法并没有对参数进行任何的安全检查和过滤,
- 如果参数中包含某些 SQL 语句关键字或特殊字符,仍然可能会导致 SQL 注入攻击。
-
- 相比之下,使用占位符(如 %s、? 或 :name)的方式可以更好地避免 SQL 注入攻击,
- 因为这些占位符会被数据库驱动程序自动转义和过滤。
- 因此,使用占位符的 SQL 查询语句比手动拼接 SQL 语句和参数更加安全。