Python pymysql.err.InternalError: (1054, “Unknown column ‘self.user_username‘ in ‘field list‘“)

一开始是想写个插入数据库数据的小程序
但是就在我吧写死的语句改成了变量后 执行报错

代码片段:

    def insert_mysql(self):
        sql = "insert into username(username,password)values(self.username,self.password)"
        #sql = "show tables"
        self.cursor.execute(sql)
        self.mydb.commit()
        results = self.cursor.fetchall()
        print(results)
        self.cursor.close()

数据库连接啥的就不写了 因为错误和那些没关系

其实pycharm已经将sql = 行标黄给我提示了,但是一开始就有这么个提示,然后我执行也没报错就没管它
还是自己挖坑自跳

原因: sql语句中不能直接写变量
改写成为:

    def insert_mysql(self):
        sql = "insert into username(username,password)values(%s,%s)"
        #sql = "show tables"
        self.cursor.execute(sql,[self.user_username,self.user_password])
        self.mydb.commit()
        results = self.cursor.fetchall()
        print(results)
        self.cursor.close()

将sql = 后面的sql 语句中的变量全部替换为 %s

然后再连接执行的时候sql后面加逗号,中括号,里面写变量,多个中括号用逗号分隔

抛开其他代码对比:
改造前报错的内容

sql = "insert into username(username,password)values(self.username,self.password)"
self.cursor.execute(sql)

改造后

sql = "insert into username(username,password)values(%s,%s)"
execute(sql,[self.user_username,self.user_password])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值