python mysql 元组_在python中向MySQLdb传递元组时出现问题

我有一些sql查询可以通过python mysqldb运行到mysql数据库中,但是我想让它们少一点sql注入漏洞,这样小bobby表就不会试图添加数据。。

例如:

原件:

(这有效,因此ListID等绝对有效)sql="SELECT NAME FROM ListsTable WHERE ID=%s"%(ListID)

c.execute(sql)

尝试使用元组:sql="SELECT NAME FROM ListsTable WHERE ID=%s"

c.execute(sql,(ListID,))

有效:sql="SELECT NAME FROM ListsTable WHERE ID=%s"

c.execute(sql, ListID)

我不知道为什么第二次尝试不作为元组工作,而是作为一个参数接受它,但是无论是哪种方式,对于另一个语句,我都需要传递多个参数,这样就不起作用:

原件:sql="SELECT * FROM ListsTable ORDER BY ID DESC LIMIT %s,%s"%(Page, (Page*20)+20)

c.execute(sql)

如果我尝试以元组的形式发送参数,那么这个方法仍然有效:sql="SELECT * FROM ListsTable ORDER BY ID DESC LIMIT %s,%s"

var1=Page

var2=(Page*20)+20

params=(var1,var2)

c.execute(sql,params)

甚至只是sql="SELECT * FROM ListsTable ORDER BY ID DESC LIMIT %s,%s"

c.execute(sql,(Page,(Page*20)+20))

我最近在我的webserver日志中发现了这个错误,不过请注意,这可能是一个redhering,因为我尝试了很多不同的东西,因为它以前没有出现过错误:(这个错误是指上面传递“params”变量的尝试)File "process.py", line 98, in main

c.execute(sql,params)

File "/var/www/cgi-bin/MySQLdb/cursors.py", line 159, in execute

query = query % db.literal(args)

TypeError: not enough arguments for format string

编辑:如果有帮助的话,我正在使用mysqldb版本1.2.3,以防它不接受该版本的元组,但不要让我开始了解mysqldb文档是多么垃圾。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值