我已将文本框中的数据存储到python mysql数据库中。并尝试将python mysql数据库中存储的数据存入文本框。我写了以下代码。
cur = con.cursor()
data = cur.execute("SELECT First FROM Mydb")
self.txt1.text = data
其中Mydb
是表名,First是该表的列。运行我的应用程序后,我收到了以下错误(Traceback):
追踪(最近一次呼叫最后一次):
文件" main.py",第221行,
MySlam1App().run()
文件" /usr/lib/python2.7/dist-packages/kivy/app.py" ;,第792行,在运行中
runTouchApp()
文件" /usr/lib/python2.7/dist-packages/kivy/base.py",第481行,在runTouchApp中
EventLoop.window.mainloop()
文件" /usr/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py",第381行,在主循环中
self._mainloop()
文件" /usr/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py",第287行,在_mainloop
EventLoop.idle()
文件" /usr/lib/python2.7/dist-packages/kivy/base.py" ;,第324行,处于空闲状态
self.dispatch_input()
文件" /usr/lib/python2.7/dist-packages/kivy/base.py",第309行,在dispatch_input
post_dispatch_input(*pop(0))
文件" /usr/lib/python2.7/dist-packages/kivy/base.py" ;,第275行,在post_dispatch_input
wid.dispatch('on_touch_up', me)
文件" _event.pyx",第316行,在kivy._event.EventDispatcher.dispatch中 (kivy / _event.c:4543)
文件" /usr/lib/python2.7/dist-packages/kivy/uix/behaviors.py",第110行,on_touch_up
self.dispatch('on_release')
文件" _event.pyx",第312行,位于kivy._event.EventDispatcher.dispatch(kivy / _event.c:4497)
文件" /usr/lib/python2.7/dist-packages/kivy/lang.py",第1262行,在custom_callback中 exec( kvlang .co_value,idmap)
文件" ./ myslam1.kv",第311行,
on_release: root.show1()
文件" main.py",第121行,在show1
中 self.txt1.text = data
文件" properties.pyx",第322行,位于kivy.properties.Property。设置(kivy / properties.c:3582)
文件" properties.pyx",第1196行,位于kivy.properties.AliasProperty.set(kivy / properties.c:19322)
文件" /usr/lib/python2.7/dist-packages/kivy/uix/textinput.py" ;,第2365行,在_set_text中 self._refresh_text(文本)
文件" /usr/lib/python2.7/dist-packages/kivy/uix/textinput.py" ;,第1420行,在_refresh_text中 _lines,self._lines_flags = self._split_smart(text)
文件" /usr/lib/python2.7/dist-packages/kivy/uix/textinput.py" ;,第1786行,_split_smart
lines = text.split(u'\n')
AttributeError:' tuple'对象没有属性' split'
从数据库直接获取数据以显示到文本框或任何其他控件的正确方法是什么。
答案 0 :(得分:0)
cur.execute
返回受影响的行数,而不是数据本身。您需要使用fetchone()
:
cur.execute("SELECT First FROM Mydb")
data = cur.fetchone()
答案 1 :(得分:0)
我已经解决了我的错误,即获取一个值(记录中的字段)并将其显示在文本框或您想要的任何控件中。这是代码:
与con:
cur = con.cursor()
cur.execute("SELECT * FROM DB")
for tup in cur:
self.data1.text = tup[0]
其中data1是python文件中文本框的指定名称,以便从kv文件访问该文本框。 并且tup [0]是表DB中第一行的第一个值。 上面的代码仅适用于表格中的一行。
答案 2 :(得分:0)
我看到这是一个旧帖子,但肯定会有人在寻找这样的功能。所以,这将是一个完整的功能!
def show_item(self):
db = sqlite3.connect("mydb.db")
cur = db.cursor()
nbr = int(self.txt_id.text())
command = ''' SELECT column1, column2, column3 FROM my_tbl WHERE id <=?'''
cur.execute(command, [nbr])
data = cur.fetchone()
for data in cur:
self.txt_column1.setText(str(data[0]))
self.txt_column2.setText(str(data[1]))
self.column3.setText(str(data[2]))