首页 > 解决方案 > 使用 IF 函数来区分应该使用哪个 sqlite 查询?

问题描述

我有以下(更新的)代码:

from tkinter import ttk
import sqlite3
from tkinter.ttk import *
import math

Quantity = StringVar()


def calc(filter):
    qty = Quantity.get()
    with sqlite3.connect('Test.sql3') as conn:
        cursor = conn.cursor()
        conn.create_function("CEIL", 1, lambda v: int(math.ceil(v)))
        cursor.execute('SELECT CEIL(Upper*?),'
                       'CEIL(Stiffener*?),'
                       'CEIL(Insole*?),CEIL(Sock*?),'
                       'CEIL(Laces*?),'
                       'CEIL(Foil*?),'
                       'CEIL(PBA887*?),'
                       'CEIL(Soles*?),'
                       'CEIL(Eyelets*?),'
                       'CEIL(IA80*?),'
                       'CEIL(GussetElastic*?),'
                       'CEIL(Cartons*?) '
                       'FROM Costing WHERE Type=?',
                       (qty, qty, qty, qty, qty, qty, qty, qty, qty, qty, qty, qty, filter,))
        results = cursor.fetchall()

        item_0_in_result0 = [_[0] for _ in results]

        result0.config(text=item_0_in_result0)

        cursor.close()
        conn.commit()

# Result labels
Label(root, text="Upper Material:", width=20, background="lightgreen", font=("Arial, bold", 11)).place(x=80, y=160)
result0 = Label(root, width=40, background="lightgreen", font=("Arial, bold", 11))
result0.place(x=250, y=160)
line 34, in calc
    (qty, qty, qty, qty, qty, qty, qty, qty, qty, qty, qty, qty, filter,))
sqlite3.OperationalError: near ")": syntax error

CEIL(Sock*?)是否应该像上面的代码一样应用声明的更改:

代码已相应调整以适用于当前的评论和描述。

我知道不建议发布整个代码,因此我缩短了可能在多行中重复的部分以适应查询。请记住,我仍然是新手,tkinter并且只是将代码作为一种爱好。

谢谢你的理解

标签: pythondatabasesqlitetkinter

解决方案


如果要根据条件运行查询,请为查询提供条件。

例子:

            email = request.form['email']
            role = request.form['role']

            # Create Cursor
            cur = mysql.connection.cursor()

            if role == 'admin':
                    # Get user by email
                    result = cur.execute("SELECT * FROM admins WHERE email = %s", [email])
            else:
                    # Get user by email
                    result = cur.execute("SELECT * FROM users WHERE email = %s", [email])

推荐阅读