【问题标题】:View the contents of a database column inside the combobox查看组合框中数据库列的内容
【发布时间】:2021-11-02 05:24:29
【问题描述】:

我想查看组合框中的数据库列的内容。我知道这很容易,但我做不到。我刚开始使用 Python。我一定是弄得一团糟,出了点问题。我该怎么办?

请告诉我答案中的代码,既是因为我是 Python 新手,我可能不明白,而且因为这样我可以分配最佳答案。谢谢

更新了我的代码

import sqlite3

con = sqlite3.connect('folder db')
cursor = con.cursor()

def combo_city():
    cursor.execute('SELECT City FROM Table1')
    result=[row[0] for row in cursor]
    return result


city=ttk.Combobox(window, width = 25)
city['value'] = combo_city()
city.place(x=13, y=80)
city.set("Select")

【问题讨论】:

    标签: python sql python-3.x python-2.7 sqlite


    【解决方案1】:

    您首先需要连接到数据库,然后执行所需的 SQL 语句。然后,您应该根据您的要求使用cursor.fetchall()cursor.fetchone()cursor.fetchmany(size)

    这是一个例子。

    import sqlite3
    import tkinter as tk
    from tkinter import ttk
    from itertools import chain
    
    
    def create_db():
    
        with sqlite3.connect("sample.db") as conn:
            conn.cursor().executescript("""
                                CREATE TABLE IF NOT EXISTS table1(city VARCHAR(30) PRIMARY KEY);
                                INSERT OR IGNORE INTO table1 VALUES ('Tokoyo'), ('New York');
                                """)
    
    def load_combobox():
    
         with sqlite3.connect("sample.db") as conn:
            cur = conn.execute("SELECT city FROM table1")
            cities = list(chain.from_iterable(cur.fetchall()))
            combo.config(values=cities)
    
    root = tk.Tk()
    
    combo = ttk.Combobox(root)
    combo.pack()
    
    create_db()
    load_combobox()
    
    root.mainloop()
    

    相关链接供您探索with statementexecutescriptitertools.chain.from_iterable()

    【讨论】:

    • 第 1 部分。感谢您回答我。是的,我知道您需要先连接到数据库。我做了,但我没有粘贴那段代码。我做的和你不同,没有创建函数,没有使用,没有执行脚本。所以:db = Database('folder db'),然后 con = sqlite3.connect('folder db'),然后 cursor = con.cursor()。我写的和你写的使用数据库有什么区别?评论太长,我下一条评论继续。
    • 第 2 部分。使用 with 是什么意思?使用 itertools 和 chain 是什么意思?过去我创建了类似的东西(从网络复制代码),但我使用过一种更简单的方法,而不是城市=列表(chain.from_iterable(cur.fetchall。我已经更新了我的问题的代码(看看它),根据我正在谈论的代码对其进行修改。我的代码有什么区别你的代码建议给我吗?你能详细解释一下你的代码吗?我不明白链和整行城市=列表(chain.from_iterable(cur.fetchall()))。谢谢
    • with 是上下文管理器。简而言之,它有助于正确分配和释放资源。阅读该链接以获得更多解释。 itertools 以 python 作为标准库,并有很多函数可以为您简化事情,chain.from_iterable 就是其中之一,可以帮助您扁平化嵌套列表或可迭代对象。
    • conn.executescript() 有助于执行多个 SQL 语句,而不必多次编写 conn.execute()
    • 嗯,好的。而是链它有什么用?你的代码和我的帖子有什么区别(我修改和更新的代码)。请问能具体回答我吗? (也是第 1 部分、第 2 部分)。所以我会给你最好的答案并关闭问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-07-06
    • 2015-05-05
    • 2021-12-27
    • 2023-03-24
    • 2016-10-02
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多