【问题标题】:How do i get this function to show only one record per time?我如何让这个功能每次只显示一条记录?
【发布时间】:2020-12-04 22:28:22
【问题描述】:

此代码从表中检索所有记录并显示。我怎样才能改变它,使它一次只显示表中的一条记录?

def printquestion():
    conn = sqlite3.connect('VIT.db')
    c = conn.cursor()
    posts = "select que from Questions"
    c.execute(posts)
    conn.commit()
    records = c.fetchall()
    print(records)
    print_q = ''
    for record in records:
        print_q += str(record[0]) + "\n"
    lbl_question = Label(top, text=print_q)
    lbl_question.grid(row=2, column=1)

    conn.close()

【问题讨论】:

  • “一次显示一条记录”是什么意思?您使用的是什么 GUI 框架?它是桌面应用还是网络应用?
  • 我正在使用 python 和 tkinter。它适用于桌面应用程序。通过“一次显示一条记录”,我的意思是我需要从我所指的表中访问一条记录。表中有几条字符串形式的记录。单击按钮后,我需要它们一一出现。顺便说一句,我对 python 很陌生,请原谅我缺乏知识。

标签: python sql sqlite tkinter


【解决方案1】:

您需要将表中的所有行加载到元组列表中。然后,您可以使用全局变量跟踪正在显示的行。当用户点击下一个或上一个时,您增加或减少变量并从列表中选择一个数据行并将其放入 GUI。

您可以通过使用包含您的数据和业务逻辑的类来改进所有这些。

查看此框架以使用数据绑定:https://github.com/marczellm/tkpf

了解事件驱动编程和事件循环。您应该在窗口打开时加载一次数据。

【讨论】:

    【解决方案2】:

    所以我改变了我的代码,使它每次只检索并显示一条记录(迭代)

    def printquestion():
        global i            
        conn = sqlite3.connect('VIT.db')
        c = conn.cursor()
        post_q = "select que from Questions where id=" + str(i)
        c.execute(post_q)
        records = c.fetchone()
        print(records)
        print_q = ''
        for record in records:
            print_q += str(record) + "\n"
        lbl_question = Label(top, text=print_q)
        lbl_question.grid(row=2, column=1)
    

    我在这个函数之外给出了一个变量i=1,并将它称为一个全局变量,作为sql查询的id。在更多代码之后,i 在函数结束时递增为i+=1。希望这对需要的人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 2021-11-04
      相关资源
      最近更新 更多