python - Python:如何根据另一个组合框的选择从 SQL 获取 ttk 组合框的数据
问题描述
我正在尝试使用两个 ttk 组合框从 sqlite 数据库中获取数据。我设法能够使用 combo_division() 函数在一个名为 divisiondropmenu 的组合框中列出项目。现在我正在尝试对名为 productdropmenu 的第二个组合框做类似的事情,但需要根据组合框中名为 divisiondropmenu 的第一个选定项目来缩小列表的范围。
为了让 SQL 查询传递第二个组合框所需的信息,我正在考虑这样的事情:
'SELECT * FROM productname WHERE divisionname=?', (function_name())
到目前为止两个组合框的代码:
from tkinter import *
from tkinter import ttk
from tkinter.ttk import *
import sqlite3
def combo_division():
conn = sqlite3.connect('anglingdatabase.db')
cursor = conn.cursor()
cursor.execute('SELECT divisionname FROM productdivision')
data = []
for row in cursor.fetchall():
data.append(row[0])
return data
root = Tk()
root.title("Random Window Title")
root.geometry('1280x720')
rows = 0
while rows < 50:
root.rowconfigure(rows, weight=1)
root.columnconfigure(rows, weight=1)
rows += 1
divisiondropmenu = ttk.Combobox(root)
divisiondropmenu['values'] = combo_division()
divisiondropmenu.bind('<<ComboboxSelected>>', selecteddivision)
divisiondropmenu.grid(row=1, column=2, sticky='NESW')
productdropmenu = ttk.Combobox(root)
productdropmenu['values'] = combo_product()
productdropmenu.grid(row=2, column=2, sticky='NESW')
root.mainloop()
解决方案
data = combo_division()
example_sql = ''' SELECT * FROM tablename WHERE division in ('{}') '''.format("','".join(data))
您可以动态构建实际的 SQL,前提是数据绝不是用户输入(以避免 SQL 注入)。
推荐阅读
- html - XML -当href上没有链接时如何从元素获取链接
- javascript - Nest.js 自定义管道验证器不适用于带有 @Req() 和 @Res() 参数的方法
- ios - 错误:无法转换类型“URL?”的值 到预期的参数类型'URLRequest
- javascript - 如何修复 VueJS 中的“这是未定义的”?
- php - 删除一个数组的最后一个元素并将其添加到第二个数组的开头
- django - 如何让我的 Django REST api 与 Angular 前端交互托管在 nginx 服务器上
- bash - Android Studio 未使用 Jsch 运行 .sh 脚本
- visual-studio - proget nuget 服务器中是否有设置使其考虑版本 1.0.1.0 = 1.0.1
- java - 在 Spring Boot 中找不到 JSP 文件
- scala - Scala:不允许无法检查详尽的模式匹配