Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 23, 2013 17:23:45

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 QtSql Добавление нескольких записей в таблицу

Всем доброго, подскажите как добавить несколько записей в таблицу. Единственный момент у меня все это работает через процедуру, но мне кажется что и с 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()
Когда добавляешь одну запись работает нормально, когда через цикл выдает ошибку.



Python 2.7.3
Pyside 1.1.2

Отредактировано Cover Story (Апрель 23, 2013 17:25:47)

Офлайн

#2 Апрель 23, 2013 17:42:38

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4 QtSql Добавление нескольких записей в таблицу

Проверить не могу, но есть догадки.
addBindValue() добавляет параметр в список, а на следующем шаге список параметров не очищается, скорее нужен bindValue(pos, value).
Если только замена на bindValue() не поможет, можно попробовать вызвать query.finish() в конце цикла. А если и это не поможет, то каждый раз создавать query.

Офлайн

#3 Апрель 25, 2013 11:29:29

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 QtSql Добавление нескольких записей в таблицу

Все разобрался.
Вот рабочий кусок:

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()
Еще раз спасибо.



Python 2.7.3
Pyside 1.1.2

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version