【发布时间】:2014-06-27 08:26:26
【问题描述】:
所以我正在使用 Web.py 并且我有以下代码:
check = db.select('querycode', where='id=$id', vars=locals())[0]
效果很好,它将 $id 替换为变量。但是在这一行中它不起作用:
web.sendmail('mail@mail.mail', "tomail@tomail.tomail", 'Subject', 'Hello $name')
我做错了什么以及它如何工作。我的概念是否正确:$ 符号替换了变量?
【问题讨论】:
-
vars=locals()位很好地表明第一个示例中发生的事情是在 insidedb.select完成的,而不是 Python 在传递字符串之前对其进行转换。在这种情况下,出于安全原因,它是由数据库完成的——它有助于防止SQL Injection——而这个特性实际上不能在Python 级别(安全性取决于为 db 提供比一个长字符串更结构化的东西)。