【问题标题】:How to check results returned from sqlite2 execute?如何检查从 sqlite2 执行返回的结果?
【发布时间】:2021-02-03 02:46:28
【问题描述】:

我正在尝试检查并验证 cursor.execute('SQL query') 的结果。以下是我正在尝试的方式。

def select_from_db(card_number, pin):
   conn = sqlite3.connect('card.s3db')
   cur = conn.cursor()
   cur.execute("SELECT * FROM card WHERE number=?", (card_number,))
   returned_account = cur.fetchone()
   if type(returned_account[1]) is not 'NoneType':
      if returned_account[1] == card_number and returned_account[2] == str(pin):
          return True
   conn.close()
   return False

这个想法是,当数据库中没有卡号时,select_from_db 应该返回 False,如果有一张带有 card_number 的卡,那么我也需要检查它的 pin。当卡号和密码匹配时,函数应该返回True,否则返回Falce。

这是一个课程项目。它不适用于生产。

【问题讨论】:

    标签: python sqlite validation resultset


    【解决方案1】:

    我获取了您的代码并对其进行了编辑。
    代码检查None 结果并确保连接已关闭。 (使用finally

    import sqlite3
    def select_from_db(card_number, pin):
      try:
        conn = sqlite3.connect('card.s3db')
        cur = conn.cursor()
        cur.execute("SELECT * FROM card WHERE number=?", (card_number,))
        returned_account = cur.fetchone()
        if returned_account is None:
          return False
        else:
          return returned_account[1] == card_number and returned_account[2] == str(pin)
      finally:
        if conn:
          conn.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 2017-09-10
      • 2020-12-08
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多