python实现用户登陆(sqlite数据库存储用户信息)
python实现用户登陆(sqlite数据库存储用户信息)
目录
1 2 3 4 5 | 创建数据库 数据库管理 简单登陆 |
有些地方还未完善。
创建数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import sqlite3 #建一个数据库 def create_sql(): sql = sqlite3.connect( "user_data.db" ) sql.execute( """create table if not exists %s( %s integer primary key autoincrement, %s varchar(128), %s varchar(128), %s varchar(128), %s char(128))""" % ( 'user' , 'id' , 'name' , 'passworld' , 'number' , 'status' )) sql.close() create_sql() #user_data.db为数据库文件名 #create table if not exists为建立一个数据库指令,如果文件存在就打开,不存在就创建一个 #%s对应后面的四个参数 # 'user':表名 # 'id':相当于一个索引,autoincrement指定为自动增量 # 'name',用户名 # 'passworld'用户密码 # 'number':座位号 # 'status:状态 # sql.close()是关闭数据库,每次对数据库进行操作后,都要记得进行关闭操作 #数据库的格式 # file:user_data.db # table:user # id name passworld number status |
数据库管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | import sqlite3 # 数据库增加数据 def add_data(): input_name = input ( "请输入您的用户名:" ) input_passworld = input ( "请输入您的密码:" ) number = input ( '请输入学号' ) status = None sql = sqlite3.connect( "user_data.db" ) sql.execute( "insert into user(name,passworld,number,status) values(?,?,?,?)" , (input_name,input_passworld,number,status)) sql.commit() print ( "添加成功" ) sql.close() # 这里增加了读取四个个参数values(?,?,?,?)字段里的四个?号,对应了参数input_name,input_passworld,number,status def showalldata(): sql = sqlite3.connect( "user_data.db" ) data = sql.execute( "select * from user" ).fetchall() sql.close() return data # "select * from user"为查询user对应的表的所有资料的指令 def drop(): print ( '指定id删除' ) sql = sqlite3.connect( "user_data.db" ) data = sql.execute( "select * from user" ).fetchall() print ( '所有数据:' + str (data)) while 1 : id = input ( '请输入你要删除的数据的id:' ) sql.execute( "DELETE FROM user WHERE id = %s" % id ) sql.commit() print ( '删除完成' ) data = sql.execute( "select * from user" ) print (data.fetchall()) sql.close() break print ( """ 1:增加数据 2:查询数据 3.删除数据 q:退出 """ ) while 1 : option = None cho = input ( '选择您想要的进行的操作:' ) if cho = = '1' : add_data() elif cho = = '2' : data = showalldata() print (data) elif cho = = '3' : drop() elif cho = = 'q' : break else : "输入错误" |
简单登陆
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import sqlite3, getpass #保证每一个用户名和学号不同 #输入用户名正确后,输入密码。用户名正确的情况下,密码连续输错三次,用户将被锁定,禁止登录系统 #输入用户名后,如果用户名被锁定及无效用户名,程序会退出,请确保输入正确。 def showdate(username): sql = sqlite3.connect( 'user_data.db' ) data = sql.execute( "select * from user where name='%s'" % username).fetchone() sql.close() return data # ("select * from user where username='%s'"% name)这条指令用来查询表user的name字段的对应的数据 # 最后返回用户名对应的资料 def val(): while 1 : name = input ( "用户名:" ) # 输入用户名 data = showdate(name) # 获取用户名对应的数据库资料 if data: # passworld = getpass.getpass("密码") # 输入密码 passworld = input ( '密码:' ) if data[ 2 ] = = passworld: print ( "登录成功" ) break else : print ( "密码错误" ) else : print ( "用户名不存在" ) # getpass模块可以使输入的字符不可见,在python的shell中可能无效,在终端中和用户登录效果相同,不出现输入字符 val() print ( "进入用户操作" ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?