一开始是想写个插入数据库数据的小程序
但是就在我吧写死的语句改成了变量后 执行报错
代码片段:
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])