Форум сайта python.su
Программа делает выборку, затем бежит по ней и сравнивает текущее значение в выборке с предыдущим.
from PyQt4 import QtSql, QtGui class win(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.connect() self.hop() def connect(self): self.conn = QtSql.QSqlDatabase.addDatabase("QSQLITE") self.conn.setDatabaseName("D:\DB.sqlite3") self.conn.open() print (self.conn.lastError().text()) def hop(self): query = QtSql.QSqlQuery(self.conn) query.exec("SELECT myfield FROM mytable ORDER BY myfield) tmp_myfield = None while query.next(): record = query.record() ident = True if tmp_myfield != record.value("myfield"): ident = False print (tmp_myfield, record.value("myfield"), ident) # выводим на экран предыдущее значение поля и текущее, а также результат их сравнения if ident == False: tmp_myfield = record.value("myfield") if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) w = win() w.show() sys.exit(app.exec_())
None <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC848> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC848> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC8B8> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC8B8> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC848> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC848> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC8B8> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC8B8> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC848> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC8B8> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC848> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC848> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC8B8> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC8B8> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> False <PyQt4.QtCore.QPyNullVariant object at 0x02EDC880> <PyQt4.QtCore.QPyNullVariant object at 0x02EDC848> False БАБАЙКА БАБАЙКА True
Офлайн
Безобразие! Пришлось вводить дополнительную переменную, которая получает значение из record.value(“myfield”), с предварительной проверкой его через type на QtCore.QPyNullVariant. Если этот самый чёртов пиНульВариант имеет место быть, то в переменную записываем None.
Дальше сравнения делаем именно с этой дополнительной переменной.
А по-другому никак? Лишние переменные как-то не радуют.
Офлайн