将日期从 wxdatepickerctrl 插入数据库

发布于 2024-12-01 23:39:00 字数 991 浏览 3 评论 0 原文

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: an integer is required,我知道导致错误的问题是 datetime.date(self.OnGetDate),日期的格式为 datetime.date(yyyy, mm, dd),而 datepickerctrl 的格式为 (mm/日/年)。我尝试摆脱 datetime.date,但出现另一个错误,提示 psycopg2.ProgrammingError: can't adjustment type 'instancemethod',我知道它是这样说的,因为我无法调用要插入数据库的方法。所以我的问题是还有另一种方法,获取小部件上的日期并将其放入数据库中。无论哪种方式我都遇到问题。或者我做错事了。

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

So it says TypeError: an integer is required, I know the problem causing the error is the datetime.date(self.OnGetDate), date has the format datetime.date(yyyy, mm, dd), while the datepickerctrl has (mm/dd/yy). I've tried getting rid of the datetime.date, but another error comes up saying psycopg2.ProgrammingError: can't adapt type 'instancemethod', and I know its saying that because I cant call a method to be inserted to the database. So my question is there another way, to get the date on the widget and place it on the database. I'm having a problem solving either ways. Or am I doing things wrong.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半步萧音过轻尘 2024-12-08 23:39:01

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

That widget returns a wx.DateTime object, so you'll need to convert it to something that your database understands or maybe the Python datetime object. Here's a thread on how to do the latter: http://wxpython-users.1045709.n5.nabble.com/How-to-convert-wx-DateTime-to-python-datetime-td2352965.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文