<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-GB link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hi,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I am stuck making a data driven application using PyQt5 and Postgresql.  Background information<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>PyQt version '5.2.1' installed from the repositories on Linux Mint 17.2 64 bit Cinnamon<o:p></o:p></p><p class=MsoNormal>Postgresql 9.3<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>When I try to submit from a QDataWidgetMapper it doesn't seem to like the timestamp data type.  The error message I get from model.lasterror().text() gives me<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>ERROR:  invalid input syntax for type timestamp: <o:p></o:p></p><p class=MsoNormal>LINE 1: EXECUTE qpsqlpstmt_1 ('', email@email.com, '350404...<o:p></o:p></p><p class=MsoNormal>                              ^<o:p></o:p></p><p class=MsoNormal>(22007) QPSQL: Unable to create query<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>My quesitons are:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>1. could I have found a PyQt/Qt bug?<o:p></o:p></p><p class=MsoNormal>2. how can I see the exact SQL statement it is trying to use when I submit?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Table structure:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>booking_id         1              character varying<o:p></o:p></p><p class=MsoNormal>checked_in         2              timestamp without time zone<o:p></o:p></p><p class=MsoNormal>checked_out     3              timestamp without time zone<o:p></o:p></p><p class=MsoNormal>hotel_id               4              character varying<o:p></o:p></p><p class=MsoNormal>id            5              character varying<o:p></o:p></p><p class=MsoNormal>label      6              character varying<o:p></o:p></p><p class=MsoNormal>departure_date               7              date<o:p></o:p></p><p class=MsoNormal>arrival_date        8              date<o:p></o:p></p><p class=MsoNormal>num_adults        9              integer<o:p></o:p></p><p class=MsoNormal>num_children    10           integer<o:p></o:p></p><p class=MsoNormal>room_id               11           character varying<o:p></o:p></p><p class=MsoNormal>room_type_id   12           character varying<o:p></o:p></p><p class=MsoNormal>address                13           character varying<o:p></o:p></p><p class=MsoNormal>reference            14           character varying<o:p></o:p></p><p class=MsoNormal>notes    15           text<o:p></o:p></p><p class=MsoNormal>email     16           character varying<o:p></o:p></p><p class=MsoNormal>corporation_id  17           bigint<o:p></o:p></p><p class=MsoNormal>cancelled             18           timestamp without time zone<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>code:<o:p></o:p></p><p class=MsoNormal># -*- coding: utf-8 -*-<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>from PyQt5.QtCore import *<o:p></o:p></p><p class=MsoNormal>from PyQt5.QtGui import *<o:p></o:p></p><p class=MsoNormal>from PyQt5.QtSql import *<o:p></o:p></p><p class=MsoNormal>from PyQt5.QtWidgets import *<o:p></o:p></p><p class=MsoNormal>import sys<o:p></o:p></p><p class=MsoNormal>from ci_co_table5 import *<o:p></o:p></p><p class=MsoNormal>from guest_info_form5 import *<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>BOOKING_ID = 0<o:p></o:p></p><p class=MsoNormal>CHECKED_IN = 1<o:p></o:p></p><p class=MsoNormal>CHECKED_OUT = 2<o:p></o:p></p><p class=MsoNormal>HOTEL_ID = 3<o:p></o:p></p><p class=MsoNormal>ID = 4<o:p></o:p></p><p class=MsoNormal>LABEL = 5<o:p></o:p></p><p class=MsoNormal>DEPARTURE_DATE = 6<o:p></o:p></p><p class=MsoNormal>ARRIVAL_DATE = 7<o:p></o:p></p><p class=MsoNormal>NUM_ADULTS = 8<o:p></o:p></p><p class=MsoNormal>NUM_CHILDREN = 9<o:p></o:p></p><p class=MsoNormal>ROOM_ID = 10<o:p></o:p></p><p class=MsoNormal>ROOM_TYPE_ID = 11<o:p></o:p></p><p class=MsoNormal>ADDRESS = 12<o:p></o:p></p><p class=MsoNormal>REFERENCE = 13<o:p></o:p></p><p class=MsoNormal>NOTES = 14<o:p></o:p></p><p class=MsoNormal>EMAIL = 15<o:p></o:p></p><p class=MsoNormal>CORPORATION_ID = 16<o:p></o:p></p><p class=MsoNormal>CANCELLED = 17<o:p></o:p></p><p class=MsoNormal>      <o:p></o:p></p><p class=MsoNormal>class Guest_form(QDialog, Ui_guest_info_form):<o:p></o:p></p><p class=MsoNormal>    def __init__(self, res_id, parent=None):<o:p></o:p></p><p class=MsoNormal>        QDialog.__init__(self)<o:p></o:p></p><p class=MsoNormal>        self.ui = Ui_guest_info_form()<o:p></o:p></p><p class=MsoNormal>        self.ui.setupUi(self)<o:p></o:p></p><p class=MsoNormal>        self.guest_model = QSqlTableModel(self)<o:p></o:p></p><p class=MsoNormal>        self.guest_model.setTable("bookings")<o:p></o:p></p><p class=MsoNormal>        self.guest_model.setFilter("id = '{0}'".format(res_id))<o:p></o:p></p><p class=MsoNormal>        self.guest_model.select()        <o:p></o:p></p><p class=MsoNormal>        print(self.guest_model.record(0).value("label"))<o:p></o:p></p><p class=MsoNormal>        print(self.guest_model.record(0).value(0))<o:p></o:p></p><p class=MsoNormal>        self.mapper = QDataWidgetMapper(self)<o:p></o:p></p><p class=MsoNormal>        self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit)<o:p></o:p></p><p class=MsoNormal>        self.mapper.setModel(self.guest_model)<o:p></o:p></p><p class=MsoNormal>        self.mapper.addMapping(self.ui.book_label,LABEL)<o:p></o:p></p><p class=MsoNormal>        self.mapper.addMapping(self.ui.booking_id,BOOKING_ID)<o:p></o:p></p><p class=MsoNormal>        self.mapper.addMapping(self.ui.ci_co,CHECKED_IN)<o:p></o:p></p><p class=MsoNormal>        self.mapper.addMapping(self.ui.arrival_date,ARRIVAL_DATE)<o:p></o:p></p><p class=MsoNormal>        self.mapper.addMapping(self.ui.departure_date,DEPARTURE_DATE)<o:p></o:p></p><p class=MsoNormal>        self.mapper.addMapping(self.ui.guest_email,EMAIL)<o:p></o:p></p><p class=MsoNormal>        self.mapper.addMapping(self.ui.adults,NUM_ADULTS)<o:p></o:p></p><p class=MsoNormal>        self.mapper.addMapping(self.ui.kids,NUM_CHILDREN)<o:p></o:p></p><p class=MsoNormal>        self.mapper.toFirst()<o:p></o:p></p><p class=MsoNormal>        <o:p></o:p></p><p class=MsoNormal>        btn = self.ui.save_record<o:p></o:p></p><p class=MsoNormal>        btn.clicked.connect(self.update_record)<o:p></o:p></p><p class=MsoNormal>        <o:p></o:p></p><p class=MsoNormal>    def update_record(self):<o:p></o:p></p><p class=MsoNormal>        #QMessageBox.warning(self, "update record", "Update record")<o:p></o:p></p><p class=MsoNormal>        row  = self.mapper.currentIndex()<o:p></o:p></p><p class=MsoNormal>        submit = self.mapper.submit()<o:p></o:p></p><p class=MsoNormal>        print("mapper: ", submit)<o:p></o:p></p><p class=MsoNormal>        if submit == False:<o:p></o:p></p><p class=MsoNormal>            print(self.guest_model.lastError().text())<o:p></o:p></p><p class=MsoNormal>         <o:p></o:p></p><p class=MsoNormal>if __name__=="__main__":<o:p></o:p></p><p class=MsoNormal>    app=QApplication(sys.argv)<o:p></o:p></p><p class=MsoNormal>    #Database stuff<o:p></o:p></p><p class=MsoNormal>    db = QSqlDatabase.addDatabase("QPSQL");<o:p></o:p></p><p class=MsoNormal>    db.setHostName("hostname")<o:p></o:p></p><p class=MsoNormal>    db.setDatabaseName("pms");<o:p></o:p></p><p class=MsoNormal>    db.setUserName("username");<o:p></o:p></p><p class=MsoNormal>    db.setPassword("password");<o:p></o:p></p><p class=MsoNormal>    if (db.open()==False):     <o:p></o:p></p><p class=MsoNormal>        QMessageBox.critical(None, "Database Error", db.lastError().text())<o:p></o:p></p><p class=MsoNormal>    res_id = "350404"<o:p></o:p></p><p class=MsoNormal>    myapp = Guest_form(res_id)<o:p></o:p></p><p class=MsoNormal>    myapp.show()<o:p></o:p></p><p class=MsoNormal>    sys.exit(app.exec_())<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-family:"Arial",sans-serif;mso-fareast-language:EN-GB'>Dave Kelly<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial",sans-serif;mso-fareast-language:EN-GB'><a href="http://theprioryinn.co.uk/">The Priory Inn</a><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial",sans-serif;mso-fareast-language:EN-GB'>01666 502 251<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Arial",sans-serif;mso-fareast-language:EN-GB'>London Road, Tetbury, GL8 8JJ<o:p></o:p></span></p><p class=MsoNormal><i><span style='font-family:"Arial",sans-serif;mso-fareast-language:EN-GB'>"Dining in a 30 mile food zone"<o:p></o:p></span></i></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>