之前学习过的用户登录验证,全都是在程序中完成的,并没有和数据库发生任何的接触。最近在学习数据库sql语言,突发奇想结合数据库完成用户登录验证。具体实现思路和过程如下:

1、首先在数据库中创建一张用户相关信息的表,主要的是用户名和密码。这里面 id 是主键,用户名是唯一的。

2、导入pymysql库,并创建数据库连接和游标。

import pymysql
conn = pymysql.connect(
   host='localhost',
   user='root',
   password='123456',
   database='db_game'
)
cursor = conn.cursor(pymysql.cursors.DictCursor)

3、编写sql。由于这里用户名是唯一的,所以我只需要检索用户名相应的那一条信息,然后将密码进行对比,一样就可以成功登陆了。

sql = '''
  SELECT * FROM tbl_user WHERE username=%s
'''

4、获取用户输入的用户名和密码。

username = input('请输入用户名:')
password = input('请输入密码:')

5、执行sql语句,获取数据库表中的信息。由于用户名唯一,所以一定只有一条信息,因此使用了fetchone()获取信息。

cursor.execute(sql, username)
a = cursor.fetchone()

6、做判断。如果返回的结果集为空,说明输入的用户名不存在于数据表中。如果存在,进行对比密码,对比不成功就是密码错误;对比成功,就可以成功登录。

if a is None:
  print("用户不存在!")
elif a['password'] != password:
  print("密码错误!")
else:
  print("成功登录!")

7、最后不要忘记了关闭游标和数据库。

cursor.close()
conn.close()

8、运行结果

9、总结

上述内容就是关于我对于和数据库结合的用户登录验证的简单实现。但此中亦有不完美之处,就是缺少了一部分:如果密码正确,用户名不正确,提示用户名错误的内容。