Найти - Пользователи
Полная версия: PyQt4 QtSql Добавление нескольких записей в таблицу
Начало » Базы данных » PyQt4 QtSql Добавление нескольких записей в таблицу
1
Cover Story
Всем доброго, подскажите как добавить несколько записей в таблицу. Единственный момент у меня все это работает через процедуру, но мне кажется что и с 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()
Когда добавляешь одну запись работает нормально, когда через цикл выдает ошибку.
reclosedev
Проверить не могу, но есть догадки.
addBindValue() добавляет параметр в список, а на следующем шаге список параметров не очищается, скорее нужен bindValue(pos, value).
Если только замена на bindValue() не поможет, можно попробовать вызвать query.finish() в конце цикла. А если и это не поможет, то каждый раз создавать query.

Cover Story
Все разобрался.
Вот рабочий кусок:
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()
Еще раз спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB