本文将重点完成以下几个操作:
- 获取数据库表中的数据,在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 = 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。)