У меня есть QThread
, который отслеживает содержимое БД, и если произошли изменения, он обновляет информацию в приложении и функцию, которая просматривает другие БД, если это необходимо изменить, и именно здесь я увидел проблему как он останавливает обновление информации и загрузку других моих модулей, если все еще есть некоторые выгруженные модули, которые используют базу данных, потому что не может получить доступ к базе данных, когда QFileDialog
находится непосредственно в папке / пути к базе данных, которую она использует.
Я использовал блок try
и работает, но он все еще не позволяет моему приложению продолжать загружать другие модули, если ему необходим доступ к БД.
Я попытался получить доступ к пути базы данных с помощью другого приложения QFileDialog
, и кажется, что у приложения, с которым у меня есть проблема, все еще есть доступ.
Вот небольшой пример.
import sys, time, sqlite3
from PyQt4.QtCore import QThread
from PyQt4.QtGui import QApplication, QMainWindow, QFileDialog
class testThread(QThread):
def __init__(self, parent=None):
QThread.__init__(self, parent)
self.parent = parent
def run(self):
while True:
conn = None
while conn is None:
try:
conn = sqlite3.connect("path\\of\\db", 10.0)
except Exception:
import traceback
traceback.print_exc()
time.sleep(1.0)
time.sleep(1.0)
class testMain(QMainWindow):
def __init__(self, parent=None):
super(testMain, self).__init__(parent)
testThread_obj = testThread(self)
testThread_obj.start()
new_path = unicode(QFileDialog.getOpenFileName(None, 'Select Database', "path\\of\\db", "(*.db)")).replace("/", "\\")
def run():
app = QApplication(sys.argv)
GUI = testMain()
sys.exit(app.exec_())
run()
Можно ли разрешить QThread
доступ к БД, даже если QFileDialog
находится на пути текущего БД? Или это просто так, как я не вижу ничего в документации, которая упоминает это.