将日期从wxdatepickerctrl插入数据库

时间:2011-08-29 16:55:19

标签: python postgresql wxpython psycopg2

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

所以它说TypeError:需要一个整数,我知道导致错误的问题是datetime.date(self.OnGetDate),date的格式是datetime.date(yyyy,mm,dd),而datepickerctrl有(MM / DD / YY)。我已经尝试摆脱datetime.date,但是出现了另一个错误,说psycopg2.ProgrammingError:无法调整类型'instancemethod',我知道它的说法因为我不能调用一个方法来插入数据库。所以我的问题还有另一种方法,即在窗口小部件上获取日期并将其放在数据库中。我遇到了解决问题的方法。或者我做错了。

1 个答案:

答案 0 :(得分:1)

该窗口小部件返回一个wx.DateTime对象,因此您需要将其转换为数据库理解的内容或Python日期时间对象。这是关于如何做后者的一个主题:http://wxpython-users.1045709.n5.nabble.com/How-to-convert-wx-DateTime-to-python-datetime-td2352965.html