【问题标题】:How to fetch data into textbox from python MySQL database?如何从 python MySQL 数据库中获取数据到文本框中?
【发布时间】:2015-03-11 10:14:42
【问题描述】:

我已将文本框中的数据存储到 python mysql 数据库。并尝试将存储的数据从 python mysql 数据库获取到文本框中。为此,我编写了以下代码。

cur = con.cursor()

data = cur.execute("SELECT First FROM Mydb")

self.txt1.text = data

其中Mydb 是表名,First 是该表中的列。运行我的应用程序后,我收到以下错误(Traceback):

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.set (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'

从数据库直接获取数据以显示到文本框或任何其他控件的正确方法是什么。

【问题讨论】:

    标签: python mysql


    【解决方案1】:

    cur.execute 返回受影响的行数,而不是数据本身。你需要使用fetchone():

    cur.execute("SELECT First FROM Mydb")
    data = cur.fetchone()
    

    【讨论】:

    • 请发布完整的回溯。
    【解决方案2】:

    我已经解决了我的错误,即获取一个值(记录中的字段)并将其显示在文本框或您想要的任何控件中。这是代码:

    搭配:

    cur = con.cursor()
    cur.execute("SELECT * FROM DB")
    for tup in cur:
        self.data1.text = tup[0]
    

    其中 data1 是 python 文件中文本框的指定名称,用于从 kv 文件访问该文本框。 并且 tup[0] 是表 DB 中第一行的第一个值。 以上代码只针对表格中的一行。

    【讨论】:

      【解决方案3】:

      我看到这是一个旧帖子,但肯定会有人在寻找这样的功能。所以,这将是一个完整的功能!

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-18
        • 2012-11-20
        • 1970-01-01
        • 2019-07-07
        • 2012-02-04
        • 2015-05-14
        • 1970-01-01
        相关资源
        最近更新 更多