在Python中的SELECT语句中传递列名

在Python中的SELECT语句中传递列名,第1张

概述if count == 1: cursor.execute("SELECT * FROM PacketManager WHERE ? = ?", filters[0], parameters[0]) all_rows = cursor.fetchall() elif count == 2: cursor.execute("SELECT *
if count == 1:        cursor.execute("SELECT * FROM PacketManager WHERE ? = ?",filters[0],parameters[0])        all_rows = cursor.fetchall()    elif count == 2:        cursor.execute("SELECT * FROM PacketManager WHERE ? = ? AND ? = ?",parameters[0],filters[1],parameters[1])        all_rows = cursor.fetchall()    elif count == 3 :        cursor.execute("SELECT * FROM PacketManager WHERE ? = ? AND ? = ? AND ? = ?",parameters[1],filters[2],parameters[2])        all_rows = cursor.fetchall()

这是我程序中的代码段.我打算做的是在查询中传递列名和参数.

filters数组包含列名,参数数组包含参数.计数是用户设置的过滤器数量.过滤器和参数数组已准备就绪,没有问题.我只需要将它传递给查询即可执行.这给我一个错误“TypeError:函数最多需要2个参数”

解决方法 您只能使用?而不是表名或列名来设置参数.

您可以使用预定义的查询构建一个dict.

querIEs = {    "foo": "SELECT * FROM PacketManager WHERE foo = ?","bar": "SELECT * FROM PacketManager WHERE bar = ?","foo_bar": "SELECT * FROM PacketManager WHERE foo = ? AND bar = ?",}# count == 1cursor.execute(querIEs[filters[0],parameters[0])# count == 2cursor.execute(querIEs[filters[0] + "_" + querIEs[filters[1],parameters[0])

这种方法将使您从过滤器[0]中的sql注入中保存.

总结

以上是内存溢出为你收集整理的在Python中的SELECT语句中传递列名全部内容,希望文章能够帮你解决在Python中的SELECT语句中传递列名所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1191032.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存