Вставить дату из wxdatepickerctrl в базу данных - PullRequest
0 голосов
/ 29 августа 2011
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), дата имеет формат datetime.date (гггг, мм, дд), аDatePickerctrl имеет (мм / дд / гг).Я попытался избавиться от datetime.date, но появляется другая ошибка, говорящая psycopg2.ProgrammingError: невозможно адаптировать тип 'instancemethod', и я знаю, что это так, потому что я не могу вызвать метод для вставки в базу данных.Поэтому у меня есть другой вопрос: получить дату на виджете и поместить ее в базу данных.У меня проблемы с решением в любом случае.Или я делаю что-то не так.

1 Ответ

1 голос
/ 29 августа 2011

Этот виджет возвращает объект wx.DateTime, поэтому вам необходимо преобразовать его во что-то, что понимает ваша база данных, или, возможно, в объект datetime Python.Вот тема о том, как это сделать: http://wxpython -users.1045709.n5.nabble.com / Как конвертировать-wx-DateTime-to-python-datetime-td2352965.html

...