<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>