If I create a PostgreSQL database 'test' and execute the following:
CREATE TABLE timetest ( t time );
INSERT INTO timetest VALUES ('0:0:0');


run the following Python:

from PyQt4.QtCore import *
from PyQt4.QtSql import *

db = QSqlDatabase.addDatabase("QPSQL")
db.setHostName("localhost")
db.setDatabaseName("test")
db.setUserName("postgres")
db.open()

timetestModel = QSqlTableModel()
timetestModel.setEditStrategy(QSqlTableModel.OnManualSubmit)
timetestModel.setTable("timetest")
timetestModel.select()

print \
timetestModel.record(0).field("t").value().toTime().toString("HH:mm:ss.zzz")

a = QTime(0,12,34,500)
timetestModel.setData(timetestModel.index(0,
timetestModel.fieldIndex("t")), a)
print \
timetestModel.record(0).field("t").value().toTime().toString("HH:mm:ss.zzz")

if not timetestModel.submitAll():
        raise Exception, timetestModel.lastError().text()
print \
timetestModel.record(0).field("t").value().toTime().toString("HH:mm:ss.zzz")


The output is:
00:00:00.000
00:12:34.500
00:12:34.000

The database doesn't get the 500 milliseconds.


Even worse if I execute on the database:
UPDATE timetest SET t = '0:11:22.33';

and then run the Python above I get:
00:11:22.330
00:12:34.500
00:11:22.330

the value from the model doesn't make it into the database at all if the
time field already has milliseconds.


Any thoughts?

Chris

Linux amd64, Qt 4.5.2, PyQt4 4.5.4, Sip 4.8.2, PostgreSQL 8.3.7

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to