将wxdatepickerctrl的日期插入数据库
self.dateEntry = wx.GenericDatePickerCtrl(self, -1, size=(120,20), pos=(90,185),
style = wx.TAB_TRAVERSAL
| wx.DP_DROPDOWN
| wx.DP_SHOWCENTURY
| wx.DP_ALLOWNONE )
self.dateEntry.Bind(wx.EVT_DATE_CHANGED, self.OnGetDate)
...
def OnGetDate(self, evt):
date = evt.GetDate()
return date
...
def AddEntry(self, evt):
...
cur.execute("insert into entries (ref_no, entry_date, description) values (%s, %s, %s)", (refNo, datetime.date(self.OnGetDate), desc,))
他说出现了类型错误:需要一个整数。我知道导致这个错误的问题是 datetime.date(self.OnGetDate)。这里的日期格式是 datetime.date(年, 月, 日),而日期选择器的格式是 (月/日/年)。我尝试去掉 datetime.date,但又出现了另一个错误,提示 psycopg2.ProgrammingError: 无法适应类型 'instancemethod',我知道这是因为我不能把一个方法放进数据库里。所以我想问有没有其他方法可以从这个小工具获取日期并把它放到数据库里。我在解决这个问题时遇到了麻烦。或者我是不是做错了什么。
1 个回答
1
这个小部件返回的是一个wx.DateTime对象,所以你需要把它转换成数据库能理解的格式,或者转换成Python的datetime对象。这里有一个讨论,讲的是怎么把wx.DateTime转换成Python的datetime: http://wxpython-users.1045709.n5.nabble.com/How-to-convert-wx-DateTime-to-python-datetime-td2352965.html