pyqt+mysql_数据库与tablewidget之间的交互响应

本文将重点完成以下几个操作:

  • 获取数据库表中的数据,在pyqt中的tablewidget上面呈现。
  • 通过pyqt的pushButton控件直接对数据库里的数据进行添加和删除。

数据库的显示与更新:由于命名不同,使用过程中注意tablewidget的名称更新。

self.btn2.clicked.connect(self.load)

def load(self):
        conn = pymysql.connect(host='localhost',
                     port=3306,
                     user='root',
                     passwd='password',
                     db='seedingadmin',
                     charset='utf8')

        cur=conn.cursor()
        cur.execute('select * from tablexxx')
        rows=cur.fetchall()
        row=cur.rowcount  #取得记录个数,用于设置表格的行数
        vol=len(rows[0])  #取得字段数,用于设置表格的列数
        cur.close()
        conn.close()
        
        self.table.setRowCount(row)
        self.table.setColumnCount(vol)
        
        for i in range(row):
            for j in range(vol):
                temp_data=rows[i][j]  #临时记录,不能直接插入表格
                data=QTableWidgetItem(str(temp_data)) #转换后可插入表格
                self.table.setItem(i,j,data)

 pushButton控件添加数据:表中有strID、strName、strTheme、strDate、strURL五个需添加的数据。

Dialog页面和数据库参数信息表如下:

strID = int(time.time() % 1000 - time.time() % 100) * 10

        self.dateTimeEdit.setDateTime(QDateTime.currentDateTime())
        #可在日期框中显示当前时间。
        self.pushButton_2.clicked.connect(self.DB_insert)
        #pushButton_2就是Dialog页面的“确定”按钮


    def DB_insert(self):
        global strID
        strID += 1  #每次调用ID号都会自动增加
        #print(strID)
        #获取输入
        strName = self.lineEdit.text()
        strTheme = self.comboBox.currentText()
        strDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")#获取当前时间
        strURL = self.lineEdit_2.text()

        conn = pymysql.connect(host='localhost',
                               port=3306,
                               user='root',
                               passwd='password',
                               db='seedingadmin',
                               charset='utf8')
        cur = conn.cursor()

        sql_insert = "insert into atext(article_id,article_name,article_theme,article_datetime,article_path)" \
                     + "values(%s,%s,%s,%s,%s)"
        
        try:
            cur.execute(sql_insert, (strID, strName, strTheme, strDate, strURL))
            conn.commit()
            self.lineEdit.clear()
            self.lineEdit_2.clear()

        except:
            conn.rollback()

        cur.close()
        conn.close()

值得注意的是,最开始在插入datetime类型数据时遇到一些困难,索性将datetime的数据转换成字符串类型才可插入,使用toString函数转换也无法成功。如下:👇

strDate = self.dateTimeEdit.dateTime().toString("yyyy-MM-dd HH:MM:ss")
strDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
 
sql_insert = "insert into atext(article_id,article_name,article_theme,article_datetime,article_path)"\
             +"values(%s,%s,%s, %s,%s)"
 
cur.execute(sql_insert,(17,strName,strTheme, strDate,strURL))
 
同理删除功能,只需更改sql语句即可。
 

 

参考资料:

基于pyqt5的医院挂号系统: https://blog.csdn.net/EXECUTER_/article/details/78767776 (缺点:是在textbrowser上面呈现,非tablewidget。)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值