上一篇介绍了如何在PyQt5中实现连接mysql以及通过按钮进行简单查询数据库信息并显示到界面上:PyQt5之连接MySQL数据库以及查询获取数据。在这一篇中我将介绍其余三个数据库的基本操作:更新、插入和删除,主要通过例子来介绍在界面中如何实现这些操作!
和上一篇PyQt5之连接MySQL数据库以及查询获取数据一样的界面,如下图所示:
如下图所示,还是之前的那个表,现在实现在上图的界面中的右边表格里输入ID和姓名后,点击【更新数据】按钮后把下图中的表中对应的ID的信息进行更新。
连接数据库、按钮这些的实现方法与上一篇的查询大体相同,主要区别就是需要把右边表中输入的信息读取出来,然后写到update更新sql语句中,然后发送给数据库。与之前的查询语句不同,这里采用了字符串+变量的形式组合成sql语句(尤其要注意字符型和整型的书写区别,是否要加引号),因此建议大家在这句后面打印输出看下完整的sql语句是否正确,确认无误后再执行语句,而且类似更新插入这种语句,不只需要调用execute()函数,还需要调用commit(),查询语句则不用,需要记住这一点区别。【更新数据】按钮的功能实现代码如下:
# 【更新数据】按钮
self.pushB_update.clicked.connect(self.pushB_update_Clicked)
# 【更新数据】按钮功能
def pushB_update_Clicked(self):
conn = pymysql.connect(host='localhost', port=3306, user='root', password="199632", db="test")
cur = conn.cursor()
# 先读取右边表格输入的ID和姓名
id1 = self.tableWidget_2.item(0, 0).text()
name1 = self.tableWidget_2.item(0, 1).text()
# 更新的sql语句
sql = "UPDATE tab1 SET name='"+name1+"' WHERE id="+id1
# 打印测试
print(sql)
# 执行sql语句,并发送给数据库
cur.execute(sql)
conn.commit()
cur.close()
conn.close()
结果如下所示,我在界面的表格第一行修改了ID为4的姓名,点击更新按钮后执行更新语句,可以看到数据库中的表的ID=4的姓名已由jack变成了taylor,说明更新成功!
还是在界面的右边那个表,点击【删除数据】按钮,将刚才输入过的那一行数据在数据库中找到并删除对应的行,代码如下所示:
# 【删除数据】按钮
self.pushB_delete.clicked.connect(self.pushB_delete_Clicked)
# 【删除数据】按钮功能
def pushB_delete_Clicked(self):
conn = pymysql.connect(host='localhost', port=3306, user='root', password="199632", db="test")
cur = conn.cursor()
# 先读取右边表格输入的ID
id1 = self.tableWidget_2.item(0, 0).text()
# 删除的sql语句
sql = "DELETE FROM tab1 WHERE id="+id1
# 打印测试
print(sql)
# 执行sql语句,并发送给数据库
cur.execute(sql)
conn.commit()
cur.close()
conn.close()
点击删除按钮后,可以看到数据库中已经把ID=4的这一行已经删除:
点击【插入数据】按钮,将界面右边的表中输入的信息插入到数据库对应的表中,代码如下:
# 【插入数据】按钮
self.pushB_insert.clicked.connect(self.pushB_insert_Clicked)
# 【插入数据】按钮功能
def pushB_insert_Clicked(self):
conn = pymysql.connect(host='localhost', port=3306, user='root', password="199632", db="test")
cur = conn.cursor()
# 先读取右边表格输入的ID和姓名
id1 = self.tableWidget_2.item(0, 0).text()
name1 = self.tableWidget_2.item(0, 1).text()
id2 = self.tableWidget_2.item(1, 0).text()
name2 = self.tableWidget_2.item(1, 1).text()
# 插入的sql语句
sql1 = "INSERT INTO tab1 (id,NAME) VALUES ("+id1+",'"+name1+"')"
sql2 = "INSERT INTO tab1 (id,NAME) VALUES ("+id2+",'"+name2+"')"
# 打印测试
print(sql1)
print(sql2)
# 执行sql语句,并发送给数据库
cur.execute(sql1)
cur.execute(sql2)
conn.commit()
cur.close()
conn.close()
这里在表格中输入了两行信息,因此代码中需执行两次sql语句,点击插入按钮后,可以看到数据库中的表已经增加了两行数据:
好了,PyQt5对mysql数据库的简单增删改查都已经介绍完毕,因为只是简单地介绍,所有有些代码没有进行优化,比较笨重,例如没有判断界面的表中到达输入了多少行信息、没有循环执行sql语句等等,不过关键的部分还是基本讲到了的,希望对大家有用!