【发布时间】:2021-06-15 19:48:28
【问题描述】:
我正在尝试创建一个应用程序,在该应用程序中,用户可以选择通过在两个输入框之一中输入信息来查询数据库。我希望能够使用单个 select 语句并根据用户输入信息的框有条件地查询数据库。我目前正在尝试使用 CASE 子句,但我相信当我尝试在 THEN 参数中包含 WHERE 子句时它会遇到错误。这是我目前正在使用的:
conn = sqlite3.connect('database.db')
c = conn.cursor()
c.execute("""
SELECT CASE
WHEN :var1 <> '' THEN * WHERE column1 = :var1
ELSE * WHERE column2 LIKE '%'||var2||'%'
FROM table_name
""",
{
'var1': entrybox1.get(),
'var2': entrybox2.get()
})
当我通过我的编译器运行它时,我在 THEN 行中 WHERE 子句开始的位置出现语法错误。字典键代表我获得用户输入的不同文本字段。任何关于我可以在这里做些什么来解决这个问题或更有效的方法来解决我试图回答的问题的任何建议都将不胜感激。谢谢!
【问题讨论】:
-
用 Python 切换就行了……!?
if entrybox1.get(): c.execute('SELECT * WHERE ...') else: ...