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])

你可能感兴趣的:(日常错误,python基础)