程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从 python 中选择 MYSQL 中的一行并对其进行处理?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何从 python 中选择 MYSQL 中的一行并对其进行处理??

开发过程中遇到如何从 python 中选择 MYSQL 中的一行并对其进行处理?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何从 python 中选择 MYSQL 中的一行并对其进行处理?的解决方法建议,希望对你解决如何从 python 中选择 MYSQL 中的一行并对其进行处理?有所启发或帮助;

我正在做一个项目,在这个项目中,我必须在 sql 上工作。在代码中,我必须处理一行以匹配一个人的值。

def userID():
os.system('cls')
ii = input("enter your User ID: ")
curs.execute("SELECT ID FROM users")  #shows ID row of users table
rows = curs.fetchall()  #fetch all data of ID row

if (ii,) in rows:  #if value of ii is in the row,condition evaluates
    password()
else:
    exit()

def password():
    ps = getpass.getpass("enter your pin: ")
    curs.execute("SELECT pin FROM users")    #shows PIN row of users table
    row = curs.fetchall()   #fetch all data of pin row

if (ps,) in row:    #if Data in row matches with data in ps,condition evaluates
    main()
else:
    exit()

这是代码,您可以看到,在第一个函数中,我成功获取了用户 ID,但是当涉及到密码时,我想匹配包含用户输入的 UserID 的行中的密码。但相反,它包含的所有密码都匹配并且正在发生错误。 最近我发现了一个关键字 fetchone() 但我不确定如何使用它或者它是否有效。 请帮助我,我如何使用 python 在 sql 中只处理一行。

解决方法

在数据库返回查询结果之前,需要使用WHERE子句过滤查询结果。例如

SELECT ID,PIN FROM users WHERE ID = 42

将仅返回 id 为 42 的用户的 id 和 pin,如果没有具有此 id 的行,则不返回任何内容。

使用 WHERE 子句,我们可以像这样更改您的代码:

def userid():
    os.system('cls')
    ii = input("enter your User ID: ")
    # I'm guessing ID is an Integer value in the database?
    id_ = int(ii)
    # fetch matching id
    curs.execute("SELECT ID FROM users WHERE ID = %s",(id_,))  
    row = curs.fetchone()  #fetch all data of ID row

    if row:  # if the query returned a row,the id exists
        password(id_)
    else:
        exit()

def password(id_):
    ps = getpass.getpass("enter your pin: ")
    # Fetch the PIN only for our user's ID
    curs.execute("SELECT pin FROM users WHERE ID = %s",))    
    row = curs.fetchone()   #fetch all data of pin row

    # if Data in row matches with data in ps,condition evaluates
    if (ps,) in row:    
        main()
    else:
        exit()

请注意,在检查此类凭据时,通常会在单个查询中获取 ID 和密码并同时检查它们:

id_ = int(input('what is your id number?'))
password = getpass.getpass('what is your PIN?')
cur.execute("""SELECT id,password FROM users WHERE id = %s AND password = %s""",password))

这样效率更高,因为只向数据库发送一个查询,并且可能更安全,因为如果失败,用户不知道 ID 或密码是否错误。

大佬总结

以上是大佬教程为你收集整理的如何从 python 中选择 MYSQL 中的一行并对其进行处理?全部内容,希望文章能够帮你解决如何从 python 中选择 MYSQL 中的一行并对其进行处理?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。