Форум сайта python.su
Всем доброго, подскажите как добавить несколько записей в таблицу. Единственный момент у меня все это работает через процедуру, но мне кажется что и с INSERT такая же беда.
# -*- coding: utf-8 -*- from PySide import QtGui, QtSql import sys ya = [['06.04.2013', 4, 1, 69], ['11.04.2013', 555, 1, 69], ['11.04.2013', 20, 1, 69]] main=QtGui.QApplication(sys.argv) #Инициализация БД dbase = QtSql.QSqlDatabase.addDatabase('QMYSQL') dbase.setHostName('www.yyy.ru') dbase.setPort(3306) dbase.setDatabaseName('report') dbase.setUserName('user') dbase.setPassword('pass') ok = dbase.open() if ok: print u"Открыта" query = QtSql.QSqlQuery(dbase) query.prepare("CALL deinstall_seal_sc(?, ?, ?, '', ?)") for r in ya: query.addBindValue(r[0]) query.addBindValue(r[1]) query.addBindValue(r[2]) query.addBindValue(r[3]) if not query.exec_(): print query.lastError().text() else: print query.lastError().text() dbase.transaction() dbase.commit() dbase.close()
Отредактировано Cover Story (Апрель 23, 2013 17:25:47)
Офлайн
Проверить не могу, но есть догадки.
addBindValue() добавляет параметр в список, а на следующем шаге список параметров не очищается, скорее нужен bindValue(pos, value).
Если только замена на bindValue() не поможет, можно попробовать вызвать query.finish() в конце цикла. А если и это не поможет, то каждый раз создавать query.
Офлайн
Все разобрался.
Вот рабочий кусок:
query.prepare("CALL deinstall_seal_sc(?, ?, ?, ?, ?)") for r in ya: query.addBindValue(r[0]) query.addBindValue(r[1]) query.addBindValue(r[2]) query.addBindValue('') query.addBindValue(r[3]) if not query.exec_(): print query.lastError().text()
Офлайн