关于executemany的问题

关于executemany的问题

插入语句:

sql = "INSERT INTO t_emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) " \
data = [[9605, "小明", "SALESMAN", None, "1981-11-03", 6500, None, 10],
       [9609, "小红", "SALESMAN", None, "1983-11-03", 3500, None, 10],
       [9610, "小白3", "SALESMAN", None, "1988-11-03", 1500, None, 10]
       ]
cur.executemany(sql, data)
con.commit()

没问题

为什么照猫画虎查询语句不可以

sql = "SELECT * FROM t_emp WHERE deptno IN (%s)"
deptno = [[10], [20]]
cur.executemany(sql, deptno) #  这里先查询10,再查询20
res = cur.fetchall()  # 最后的结果应该是查询20的结果,10的结果被覆盖了
print(res)

可是结果报错,是查询语句不能用这种方式吗?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学,您好,executemany()身为批量插入数据的方法,是不能用在查询中的,如果同学想要达到循环效果,可以使用您回答中for循环的形式。

如果我的回答解决了您的疑惑,望采纳!!^_^ 祝学习愉快~~~~~

提问者 洛奇丶大 2019-07-12 18:10:26

想要达到循环查询的效果只能这么写?

sql = "SELECT * FROM t_emp WHERE deptno IN (%s)"
deptno = [10, 20, 30]

for i in range(len(deptno)):
   cur.execute(sql, [deptno[i]])
   res = cur.fetchall()
   print(res)

提问者 洛奇丶大 2019-07-12 18:04:30

sql = "SELECT * FROM t_emp WHERE deptno IN (%s)"
deptno = [[10], [20], [30]]
cur.executemany(sql, deptno)
print(cur)  # MySQLCursor: SELECT * FROM t_emp WHERE deptno IN (30)
for i in cur: # 既然上面cur语句正确,为什么不出现30部门的结果
   print(i)

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师