作为一名正在流血的python和sqlite初学者,当试图用如下变量替换列名时,会遇到极其奇怪的行为:
c.execute('SELECT ? FROM table', ("columnA",))
这让我大吃一惊,直到我最终发现只能使用参数标记来替换值名…而不是列名
现在我当然想知道为什么会这样,如果:
c.execute("SELECT %s FROM table" % (data))
真的是实现这一点的最佳方式——所有sqlinjection的废话,等等
任何意见都将不胜感激
谢谢
Tags:
编译语句时必须知道表和列名;它们不可能是参数。 上面的第二个代码段可以工作,因为其中的字符串替换是在调用execute函数之前完成的
相关问题 更多 >
编程相关推荐