我已经将文本框中的数据存储到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()
在runTouchApp中的文件"/usr/lib/python2.7/dist-包/kivy/base.py",第481行
EventLoop.window.mainloop()
文件“/usr/lib/python2.7/dist packages/kivy/core/window/window_pygame.py”,第381行,在mainloop中
self._mainloop()
文件“/usr/lib/python2.7/dist packages/kivy/core/window/window\u 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_输入中
post_dispatch_input(*pop(0))
文件“/usr/lib/python2.7/dist packages/kivy/base.py”,第275行,在发送后输入中
wid.dispatch('on_touch_up', me)
文件“_event.pyx”,第316行,kivy格式_事件事件调度员。调度(kivy/_事件c:4543)
文件"/usr/lib/python2.7/dist-包/kivy/uix/behaviors.py",第110行,on_touch_up
self.dispatch('on_release')
文件“_event.pyx”,第312行,kivy格式_事件事件调度员。调度(kivy/_事件c:4497)
文件"/usr/lib/python2.7/dist-包/kivy/lang.py",第1262行,custom_callbackexec(kvlang.co_value,idmap)
文件"。/myslam1.kv",第311行,在
on_release: root.show1()
文件“main.py”,第121行,在show1中
self.txt1.text = data
kivy中的文件“properties.pyx”,第322行。财产。所有物集合(kivy/properties.c:3582)
文件"properties.pyx",第1196行,kivy.properties.AliasProperty.set(kivy/属性. c: 19322)
文件“/usr/lib/python2.7/dist-packages/kivy/uix/textinput.py”,第2365行,位于文本self中_刷新文本(文本)
file"/usr/lib/python2.7/dist-包/kivy/uix/textinput.py",第1420行,_refresh_text_lines,自我。_lines_flags=自我。_split_smart(文本)
文件“/usr/lib/python2.7/dist packages/kivy/uix/textinput.py”,第1786行,在智能分割中
lines = text.split(u'\n')
AttributeError:“tuple”对象没有属性“split”
从数据库直接获取数据以显示在文本框或任何其他控件中的正确方法是什么。
cur。execute
返回受影响的行数,而不是数据本身。您需要使用fetchone()
:
cur.execute("SELECT First FROM Mydb")
data = cur.fetchone()
我已经解决了我的错误,获取一个值(记录中的字段),并将其显示在文本框或任何您想要的控件中。下面是代码:
与con:
cur = con.cursor()
cur.execute("SELECT * FROM DB")
for tup in cur:
self.data1.text = tup[0]
其中data1是python文件中文本框的指定名称,用于从kv文件访问该文本框。tup[0]是表DB中第一行的第一个值。以上代码仅适用于表中的一行。
我看到这是一个老帖子,但肯定会有人在寻找这样的功能。所以,这将是一个完整的功能!
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]))