每当我使用on替换SQL查询中的占位符时,它都会用'‘括起来,有没有办法避免这种情况?
这意味着我不能像这样做
SQL("SELECT * FROM {table} blah").on("table" -> tabletouse) 因为它使用'‘对表名进行包装,这会导致SQL语法错误。
发布于 2012-07-30 22:53:08
当然,您可以将这两种方法结合起来,对不希望转义的数据使用format函数
SQL(
"""
select %s from %s
where
name = {name} and
date between {start} and {end}
order by %s
""".format(fields, table, order)
).on(
'name -> name,
'start -> startDate,
'end -> endDate
)只需考虑使用format函数发送的数据不应来自用户输入,否则应对其进行适当的清理
发布于 2012-07-30 20:54:32
你不能做你正在尝试的事情。Anorm的替代品是基于PreparedStatements的。这意味着所有数据都将自动转义,这意味着您不能使用替换:
在这里你能做的最好的事情就是字符串连接(在我看来这是一种非常糟糕的方式):
SQL("SELECT * FROM " + tabletouse + " blah").as(whatever *)https://stackoverflow.com/questions/11719802
复制相似问题