sqlite中的sql语句

帮助上的例子

import sqlite3
import md5

def md5sum(t):
    return md5.md5(t).hexdigest()

con = sqlite3.connect(":memory:")
con.create_function("md5", 1, md5sum)
cur = con.cursor()
cur.execute("select md5(?)", ("foo",)) // 这行是什么意思?
print cur.fetchone()[0]

有注释那行是什么意思?
还有这个cur.execute("select ?", (p,))文档上也不说,真TM的气人,法克

阅读 6.3k
2 个回答

看样子,应该是,这一行等于

cur.execute("select md5(foo)");

根据文档

Instead, use the DB-API’s parameter substitution. Put ? as a placeholder wherever you want to use a value, and then provide a tuple of values as the second argument to the cursor’s execute() method.

之所以用placeholder,是因为直接使用字符串连接生成SQL代码这种做法是非常糟糕的,轻则字符串没有escape导致语法错误,重则可能遭受潜在的SQL注入攻击。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题