在python中操作mysql时"Unknown column 'SCOTT11111' in 'field list'")错误!

执行sql语句修改数据库数据:

今天在pycharm中第一次使用MySQL,老师一上来把简单的使用方法一讲就叫我们改一下表里的东西。感觉挺简单的,啪啪啪,下面代码出来了:

import pymysql

db = pymysql.Connect("10.0.126.123","root","aaaaaa","newdb")
cursor = db.cursor()#获取数据库光标,用来操作数据库
sql = "select * from emp;"
sql1 = "desc emp;"
def show(sql):
    try:
        cursor.execute(sql)#利用光标来操作sql语句
        emps = cursor.fetchall()#获取所有行
        print("员工信息如下:")
        for emp in emps:
            # print(emp)#显示所有信息


            #此处是修改数据库里的数据的语句(注意本句语句)
            sql2 = "update emp set ename={}".format(emp[1]+"1")#给数据库中所有的ename末尾+1
            cursor.execute(sql2)
            db.commit()
        print("一共有{}名员工".format(len(emps)))
        cursor.close()  # 关闭光标
        db.close()  # 关闭数据库
    except:
        print("查询失败!")
        db.rollback()
show(sql)
代码打出来,很高心的执行了一下,以为成功了,结果 ……

这里写图片描述

去掉异常处理条件:

这里写图片描述

好,终于出现了bug了,如我所愿,因为本人还是比较喜欢bug的,因为处理bug是一个非常爽的时刻,但今天,想了十多分中,还是搞不出来,这回就有点气了,百度了一下,找到了相似的问题,以为我的ename不是字符串类型的,还特意去type了一下,发现就是str的啊,又开始怀疑format的{}占位符不是字符床类型,有点颠覆了我对它的认知,后面str()强制了一下,结果还是不行。思量了半天,万千sql语句从脑海中划过,在看了这里的 ’SCOTT11111‘,然后发现好像在sql中字符串是用 ’ ‘引号包起来的,python中的字符串它是无法识别的。

解决方法:

需要加个 ’ ‘ 引号给占位符包起来。

sql2 = "update emp set ename='{}'".format(emp[1]+"1")#给数据库中所有的ename末尾+1

sql语言和python语言,他们是不同的两个语言,数据类型是不同的,使用时注意。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值