这不是动态字符串替换 本身
就是问题所在。用用户提供的字符串动态替换字符串是个大问题,因为这使您容易受到SQL注入攻击。如果绝对100%确保表名是您控制的安全字符串,则将其拼接到SQL查询中将是安全的。
if some_condition(): table_name = 'TABLE_A'else: table_name = 'TABLE_B'cursor.execute('INSERT INTO '+ table_name + 'VALUES (?)', values)就是说,使用这样的动态SQL肯定是一种代码味道,因此您应该仔细检查以查看是否可以找到没有动态生成的SQL字符串的更简单的替代方法。另外,如果您真的想要动态SQL,则可以使用类似SQLAlchemy的方法来确保生成的SQL格式正确。



