А затем делает выборку на каждую персону из другой таблицы, при этом
queryFIO = QtSql.QSqlQuery(connection) queryFIO.exec("SELECT FAM, IM, OT FROM FIOTABLE") queryBBB = QtSql.QSqlQuery(connection) queryBBBtext = "SELECT BUM, BAM, BOM FROM BUMTABLE WHERE FAM = ? AND IM = ? AND OT = ?" while queryFIO.next(): record = query.record() A_FAM = record.value("FAM") A_IM = record.value("IM") A_OT = record.value("OT") queryBBB.prepare(queryBBBtext) queryBBB.bindValue(A_FAM) queryBBB.bindValue(A_IM) queryBBB.bindValue(A_OT) queryBBB.exec_()
Если в FIOTABLE, допустим, поле FAM содержит Null, то в соответствующий A_FAM запишется PyQt4.QtCore.QPyNullVariant object, который НИФИГА не равен себе подобным, если получен из других полей или строк БД.
Т.е. queryBBB не найдёт такие же FAM, IM, OT во второй таблице.
Как прибиндить null???
Можно сделать проверку
type(record.value(“FAM”)) == QtCore.QPyNullVariant
а дальше что?
Что вместо этого QtCore.QPyNullVariant биндить в соответствующее поле, чтобы итоговый SQL был равнозначен:
SELECT BUM, BAM, BOM FROM BUMTABLE WHERE FAM = Null, IM = “БОБЁР”, OT = “БОБРОВИЧ”