昨日まで、アプリケーションに SQLite を使用していました。今日、MySQL を使用して切り替えるのに十分な理由 (アプリケーションの複数のインスタンス) を見つけました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 に戻って、データベースが破損する危険がありますか?