【问题标题】:Comparing MySQL table record with user entered value in PYTHON将 MySQL 表记录与 PYTHON 中用户输入的值进行比较
【发布时间】:2026-01-26 18:15:01
【问题描述】:

在这里,我基本上是在尝试从 SQL 表中获取一个字符串值,并且我想将该值与我输入的字符串进行比较。我尝试了这种简单的方法,但不幸的是,它不起作用。我需要帮助。

def cantkt():
    #tkt()
    #canstate=("DELETE FROM Chart WHERE PNR=%s"%canpnr)
    canpnr=input("Enter PNR No. to Cancel Ticket: ")
    mycsr.execute("SELECT PNR FROM Chart WHERE PNR=%s"%canpnr)
    res=mycsr.fetchone()
    print(res)
    if res==canpnr:
         print("PNR MATCHED")
    else:
         print("PNR No. DOES NOT MATCH")

【问题讨论】:

  • 我认为,如果您有两个调试打印语句,您自己就会发现这一点。 print(res) 然后print(canpnr) 这会让你很清楚为什么他们不匹配:)
  • 不,这不是问题,如果您查看输出,您会发现它们具有相同的值。
  • 但它们的值不同。一个打印('1019654419',),另一个打印1019654419

标签: python mysql-python control-flow


【解决方案1】:

正如您在打印中看到的,获取的结果是一个元组,而不是一个字符串。

你可以这样做:

res = mycsr.fetchone()
if res: res = res[0]

解释:

res 是 ('1019654419', ) 所以你必须寻找你想要得到的值,在这种情况下是第一个。

在“if res: res = res[0]”中,我们检查 res 是否有值,因为如果票证不存在,获取的值将是一个空元组,因此尝试获取第一个结果将引发 IndexError .

【讨论】:

    最近更新 更多