Как использовать цикл for для вставки строки в QSqltablemodel из списка?

Ниже представлена ​​модель базы данных:

db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('book.db')
db.open()

self.model = QtSql.QSqlTableModel(self)
self.model.setTable("card")
self.model.select()

Например:

a = "name"
b = 30
c = "M"
data_row = [a, b, c]

r = self.model.record()
r.setValue("name", "name")
r.setValue("age", 30)
r.setValue("gender", "M")
self.model.insertRecord(-1, r)
self.model.select()

В базе данных есть 3 столбца: «имя», «возраст», «пол».

Мой вопрос: как вставить строку в таблицу Sqlite, используя QSqlTableModel, используя цикл for?


person user3030327    schedule 14.08.2020    source источник


Ответы (1)


Я попробовал приведенный ниже код, который сработал для меня: использовал цикл for для подсчета столбцов и функцию zip() для параллельной итерации.

a = "name"
b = 30
c = "M"
data_row = [a, b, c]

columns = []
for col in range(self.model.columnCount()):
    columns.append(col)

r = self.model.record()
for col, rec in zip(columns, data_row):
    r.setValue(col, rec)

self.model.insertRecord(-1, r)
self.model.select()
person user3030327    schedule 16.08.2020
comment
Как ни странно, это помечено как работающее, так что я считаю, что это так. Однако columnCount() нет в документации QSqlTableColumn (doc.qt.io/qt-5/qsqltablemodel .html). - person Oak_3260548; 01.01.2021