python实现用户登陆(sqlite数据库存储用户信息)

目录

  1. 创建数据库
  2.  
  3. 数据库管理
  4.  
  5. 简单登陆

有些地方还未完善。

创建数据库

  1. import sqlite3
  2. #建一个数据库
  3. def create_sql():
  4. sql = sqlite3.connect("user_data.db")
  5. sql.execute("""create table if not exists
  6. %s(
  7. %s integer primary key autoincrement,
  8. %s varchar(128),
  9. %s varchar(128),
  10. %s varchar(128),
  11. %s char(128))"""
  12. % ('user',
  13. 'id',
  14. 'name',
  15. 'passworld',
  16. 'number',
  17. 'status'
  18. ))
  19. sql.close()
  20. create_sql()
  21.  
  22. #user_data.db为数据库文件名
  23. #create table if not exists为建立一个数据库指令,如果文件存在就打开,不存在就创建一个
  24. #%s对应后面的四个参数
  25. # 'user':表名
  26. # 'id':相当于一个索引,autoincrement指定为自动增量
  27. # 'name',用户名
  28. # 'passworld'用户密码
  29. # 'number':座位号
  30. # 'status:状态
  31. # sql.close()是关闭数据库,每次对数据库进行操作后,都要记得进行关闭操作
  32.  
  33. #数据库的格式
  34. # file:user_data.db
  35. # table:user
  36. # id name passworld number status

数据库管理

  1. import sqlite3
  2.  
  3. # 数据库增加数据
  4. def add_data():
  5. input_name = input("请输入您的用户名:")
  6. input_passworld = input("请输入您的密码:")
  7. number=input('请输入学号')
  8. status=None
  9. sql = sqlite3.connect("user_data.db")
  10. sql.execute("insert into user(name,passworld,number,status) values(?,?,?,?)",
  11. (input_name,input_passworld,number,status))
  12. sql.commit()
  13. print("添加成功")
  14. sql.close()
  15.  
  16. # 这里增加了读取四个个参数values(?,?,?,?)字段里的四个?号,对应了参数input_name,input_passworld,number,status
  17.  
  18. def showalldata():
  19. sql = sqlite3.connect("user_data.db")
  20. data = sql.execute("select * from user").fetchall()
  21. sql.close()
  22. return data
  23. # "select * from user"为查询user对应的表的所有资料的指令
  24.  
  25. def drop():
  26. print('指定id删除')
  27. sql = sqlite3.connect("user_data.db")
  28. data = sql.execute("select * from user").fetchall()
  29. print('所有数据:'+str(data))
  30. while 1:
  31. id=input('请输入你要删除的数据的id:')
  32. sql.execute("DELETE FROM user WHERE id = %s" % id)
  33. sql.commit()
  34. print('删除完成')
  35. data=sql.execute("select * from user")
  36. print(data.fetchall())
  37. sql.close()
  38. break
  39.  
  40. print("""
  41. 1:增加数据
  42. 2:查询数据
  43. 3.删除数据
  44. q:退出
  45. """)
  46. while 1:
  47. option =None
  48. cho =input('选择您想要的进行的操作:')
  49. if cho == '1':
  50. add_data()
  51. elif cho == '2':
  52. data=showalldata()
  53. print(data)
  54. elif cho == '3':
  55. drop()
  56. elif cho == 'q':
  57. break
  58. else:
  59. "输入错误"

简单登陆

  1. import sqlite3, getpass
  2. #保证每一个用户名和学号不同
  3. #输入用户名正确后,输入密码。用户名正确的情况下,密码连续输错三次,用户将被锁定,禁止登录系统
  4. #输入用户名后,如果用户名被锁定及无效用户名,程序会退出,请确保输入正确。
  5.  
  6. def showdate(username):
  7. sql = sqlite3.connect('user_data.db')
  8. data = sql.execute("select * from user where name='%s'" % username).fetchone()
  9. sql.close()
  10. return data
  11.  
  12. # ("select * from user where username='%s'"% name)这条指令用来查询表user的name字段的对应的数据
  13. # 最后返回用户名对应的资料
  14.  
  15. def val():
  16. while 1:
  17. name = input("用户名:") # 输入用户名
  18. data = showdate(name) # 获取用户名对应的数据库资料
  19. if data:
  20. # passworld = getpass.getpass("密码") # 输入密码
  21. passworld=input('密码:')
  22. if data[2] == passworld:
  23.  
  24. print("登录成功")
  25. break
  26. else:
  27. print("密码错误")
  28. else:
  29. print("用户名不存在")
  30.  
  31. # getpass模块可以使输入的字符不可见,在python的shell中可能无效,在终端中和用户登录效果相同,不出现输入字符
  32.  
  33. val()
  34. print("进入用户操作")

  

python实现用户登陆(sqlite数据库存储用户信息)的更多相关文章

  1. 使用Sqlite数据库存储数据

    1.Sql基本命令 1.1.创建表 表是有行和列组成的,列称为字段,行称为记录. 使用CREATE命令来创建表: 1 CREATE TABLE tab_student (studentId INTEG ...

  2. 使用嵌入式关系型SQLite数据库存储数据

    除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库—SQLite, 1.SQLite3支持 ...

  3. <Android基础> (六) 数据存储 Part 3 SQLite数据库存储

    6.4 SQLite数据库存储 SQLite是一种轻量级的关系型数据库,运算速度快,占用资源少. 6.4.1 创建数据库 Android为了管理数据库,专门提供了SQLiteOpenHelper帮助类 ...

  4. Android学习之基础知识九 — 数据存储(持久化技术)之SQLite数据库存储

    前面一讲介绍了数据持久化技术的前两种:文件存储.SharedPreferences存储.下面介绍第三种技术:SQLite数据库存储 一.SQLite数据库存储 SQLite数据库是一款轻量级的关系型数 ...

  5. 4、Android-数据存储方案(SQLite数据库存储)

    4.4.SQLite数据库存储 这是Android内置的数据库 是一款轻量级的关系型数据库 运算速度非常快.占用资源少.通常只需要几百kb的内存就够了 因而特别适合在移动端设备上使用 SQLite不仅 ...

  6. Android中数据存储(三)——SQLite数据库存储数据

    当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方式: 1. Share ...

  7. Android 数据存储之 SQLite数据库存储

    ----------------------------------------SQLite数据库---------------------------------------------- SQLi ...

  8. android开发之使用SQLite数据库存储

    http://blog.csdn.net/jason0539/article/details/16360835 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且 ...

  9. iOS - SQLite 数据库存储

    1.SQLite 数据库 SQLite 是一种轻型的嵌入式数据库,安卓和 iOS 开发使用的都是 SQLite 数据库.它占用资源非常低,在嵌入式设备中,可能需要几百 K 的内存数据就够了.他的处理速 ...

随机推荐

  1. Java中ArrayList循环遍历并删除元素的陷阱

    ava中的ArrayList循环遍历并且删除元素时经常不小心掉坑里,昨天又碰到了,感觉有必要单独写篇文章记一下. 先写个测试代码: import java.util.ArrayList; public ...

  2. Java 文本I/O 处理

    File类包含获得一个文件/目录的属性,以及对文件/目录进行改名和删除的方法. File类包含许多获取文件属性的方法,以及重命名和删除文件和目录的方法,但是,File类不包含读写文件内容的方法 Fil ...

  3. Python爬虫-爬取百度贴吧帖子

    这次主要学习了替换各种标签,规范格式的方法.依然参考博主崔庆才的博客. 1.获取url 某一帖子:https://tieba.baidu.com/p/3138733512?see_lz=1&p ...

  4. ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Atomicity

    1.前言 Atomicity是内存访问的一个属性,描述为原子性访问,包括single-copy atomicity和multi-copy atomicity 2.基本概念 observer 可以发起对 ...

  5. Redis简介+常用命令

    Redis=REmote DIctionary Server Redis是一个使用C语言编写的开源数据库,是高性能的key-value数据库,是内存数据库,支持数据持久化. Redis常用数据类型: ...

  6. myeclipse的web项目导入到eclipse中

    环境组成: java8 eclipse4.4.2 for javaee tomcat 7.0.61 1.导入myeclipse项目 2.设置JDK环境 3.将导入的项目修改为web项目 将myecli ...

  7. 01 响应式页面-@media介绍,

    我们为什么要写自适应的页面(响应式页面) 众所周知,电脑.平板.手机的屏幕是差距很大的,假如在电脑上写好了一个页面,在电脑上看起来不错,但是如果放到手机上的话,那可能就会乱的一塌糊涂,这时候怎么解决呢 ...

  8. Ex 6_12 凸多边形的最优三角剖分..._第六次作业

    假设顶点的总数为n,从0到n-1. 从序号为0的顶点开始以逆时针方向排序,对于 令子问题A[i,j]为包含顶点i,i+1, . . . j的凸多边形的最小三角剖分代价,dist(i,j)为顶点i到顶点 ...

  9. PYTHON-UDP

    1.TCP 和 UDP 发送数据时的流程 ***** 解释 为何TCP是可靠的 是因为发送数据后必须收到确认包 2. UDP的模板代码 ***** 1.UDP协议: (数据报协议) 特点: 无连接 优 ...

  10. PYTHON-面向对象 继承 派生

    1. 什么是继承 继承是一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类/基类/超类 继承有3个特点: 1. 子类可以遗传/重用父类的属性(解决类与类之间代码冗余的问题) 2. 在p ...