玩蛇网提供最新Python编程技术信息以及Python资源下载!

一段代码中使用了sqlite有部分不理解的地方,求老师指导下

帮助上的例子

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的气人,法克

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

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注入攻击。

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd20510.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月22日 - 11时51分56秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules