直到昨天,我还在为我的应用程序使用 SQLite。今天我找到了一个足够强大的理由(应用程序的多个实例)来使用pymysql
.
有一次,我的应用程序在数据库中查询 300 行:
cur.execute('select ime,brPredmeta,statusStr,sudskiBr ,sudija ,datumRasprave,statusPredmeta, zaduzen,datumZaduzenja from predmeti')
sviaktivni = cur.fetchall()
sviaktivni = list(sviaktivni) #make a list of tuples
sviaktivni.sort(key=operator.itemgetter(0)) #sort the list
之后,我提取变量,然后使用这些变量制作 HTML 文档,然后将其发送到打印机(PDF 或普通打印机)。生成 HTML 的代码非常简单;“标题”的几行表(为清楚起见此处省略),然后是“正文”的另一个表,代码如下:
#extract the variables
for tuple in sviaktivni:
ime,brPredmeta,statusStr,sudskiBr ,sudija ,datumRasprave,statusPredmeta, zaduzen,datumZaduzenja = tuple
#done extracting
body = ('<html><head><title></title>'
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>'
'<style></style>'
'</head>'
'<body>'
'<table align ="center" border="0" width="100%" style="table-layout:fixed">'
'<tr height="10%">'
'<td align="left" width="20">'+str(brojac)+'.</td>'
'<td align="left" width="180">'+ime+'</td>'
'<td align="left" width="100">'+str(brPredmeta)+'</td>'
'<td align="left" width="80">'+statusStr+'</td>'
'<td align="left" width="80">'+str(sudskiBr)+'</td>'
'<td align="left" width="140">'+sudija+'</td>'
'<td align="left" width="150">'+zaduzen+'</td>'
'<td align="left">'+datumZaduzenja+'</td>'
'<td align="right"> '+statusPredmeta+' </td>'
'</tr>'
'</table>'
'</body>'
'</html>')
self.ui.printHTML.append(body)
我的问题是查询立即执行,但之后 CPU 卡在 100%,整个程序就冻结了。打印预览对话框有时会显示数据,有时它只是一个空窗口。无论哪种方式,整个应用程序都被冻结。
使用 SQLite 的相同代码没有问题。我应该怎么办?回到 sqlite 并冒着数据库损坏的风险?