LINUX.ORG.RU

python, pyqt, sql

 , , ,


0

1

Есть вот такой код:

    @QtCore.pyqtSlot()
    def on_testButton_clicked(self):
        db = QtGui.qApp.db
        table = db.table('Client')
        stmt = db.selectStmt(table, fields='lastName', where='id < 30')
        print stmt
        query = db.query(stmt)
        print query
        while query.next():
            record = query.record()
            print  forceString((record.value('lastName')))
Он выводит в консоль 30 фамилий. Но, в программе, откуда я вызываю этот кусок повторно (т.е. жму на кнопку пару раз) вылазит «Ошибка совместного доступа бла-бла-бла».

Я вот и думаю - может должна быть какая то завершающая строка? Типа разъединить это все от базы. Хз как сформулировать, всего ли в коде хватает?

И где найти описание QtGui.qApp.db? С утра пытаюсь нагуглить.

Deleted

Последнее исправление: Bizun (всего исправлений: 2)

В качестве базы скорее всего SQLite, а API это QtSql.QSqlDatabase. За что мне не нравится использовать Qt в Python, так это то, что все мешается в кучу. Например работа с базой у питона традиционно соответствует DB-API, но тут с той же базой используется другой API, который органичен в Qt, но не соответствует Python.

Насчет ошибки совместного доступа. Надо смотреть как вообще организована работа с базой. Сама SQLite вполне неплохо обрабатывает параллельные запросы на чтение.

northicewind
()
Ответ на: комментарий от Deleted

Ну так сразу надо было говорить. Надо смотреть на connection. Как происходят запросы. Выложи трейс ошибки.

northicewind
()

Ошибка совместного доступа

Да где же вы такие ошибки-то берёте. Да ещё и на русском. Русская пиратская винда что ли?

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Да где же вы такие ошибки-то берёте. Да ещё и на русском. Русская пиратская винда что ли?

Честно? Хз. Уже даже воспроизвести не получается. Винда русская, пиратская или нет - не знаю.

Deleted
()
Ответ на: комментарий от northicewind

На сколько я знаю хрень с которой мается ТС, там всё таки MySQL

ya-betmen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.