我有一个带有IN语句的SQL更新查询,它通过SQLAlchemy执行。不幸的是,当前的实现使用字符串插值,我想用更安全的选项替换它。
app.controller('threeCtrl',function($scope){
$("#subBusinessOne").click(function(e) {
e.preventDefault();
var url = "businessFormOne.php";
$.ajax({
type: "POST",
url: url,
data: $("form#businessFormOne").serialize(),
success: function(data)
{
var name = $("input[name=name]").val("");
var rel= $("input[name=phone]").val("");
}
});
return false; // avoid to execute the actual submit of the form.
});
});
是否可以在此处使用session.execute('''
UPDATE servers SET
cpu_cores=st.cpu_cores,
cpu_mhz=st.cpu_mhz,
ram_mb=st.ram_mb
FROM servers
WHERE
server.provider_id IN (%s)
''' % ','.join([ ... ]))
方法替换%
运算符?或者我应该使用in_
?
答案 0 :(得分:1)
如果您只想让它更安全,您仍然可以在param占位符中进行插值:
session.execute("""UPDATE ... WHERE server.provider_id IN (%s)""" % ",".join("?" * len(provider_ids)), provider_ids)
?
是占位符,根据您使用的数据库驱动程序的paramstyle
而有所不同。
否则,最简单的方法是将其转换为session.query
或update().where()
结构。