[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: [PyQt] Bug in QSqlQuery.bindValue() ?
From: Lorenz Quack <don () amberfisharts ! com>
Date: 2010-05-13 21:39:02
Message-ID: 4BEC7176.60106 () amberfisharts ! com
[Download RAW message or body]
Hi,
I'm experiencing strange behaviour to the point where I suspect a bug in PyQt4.
When I bind a value to a named placeholder in a prepared SqlQuery and that \
placeholder occures more than once, than not all (only the last?) occurances are \
bound correctly. I'll attach an example demonstrating the problem.
sincerely yours
//Lorenz
PS: PyQt4 version: 4.7.3
Python version: 2.6.5
Qt verstion: 4.6.2
["sql_bug.py" (text/x-python)]
"""Demonstration of a bug:
named parameters are not correctly bound to an sql query
when they are used multiple times"""
from PyQt4.QtSql import *
# Setup the Database
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("sql_bug.db")
db.open()
# Setup an example table with one example entry
query = QSqlQuery()
query.exec_("""DROP TABLE IF EXISTs foo""")
query.exec_("""CREATE TABLE foo
(id INTEGER PRIMARY KEY AUTOINCREMENT,
bar INTEGER)""")
query.exec_("""INSERT INTO foo (bar)
VALUES (0)""")
# this is the code revealing the bug. it will set bar to NULL
query.prepare("""UPDATE foo SET bar = :param
WHERE id IS :param""")
query.bindValue(":param", 1)
# using positional binding works fine and correctly sets
## query.prepare("""UPDATE foo SET bar = ?
## WHERE id IS ?""")
## query.bindValue(0, 1)
## query.bindValue(1, 1)
query.exec_()
db.close()
_______________________________________________
PyQt mailing list PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic