python实现用户登陆(sqlite数据库存储用户信息)
python实现用户登陆(sqlite数据库存储用户信息)
目录
- 创建数据库
- 数据库管理
- 简单登陆
有些地方还未完善。
创建数据库
- 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
数据库管理
- 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:
- "输入错误"
简单登陆
- 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("进入用户操作")
python实现用户登陆(sqlite数据库存储用户信息)的更多相关文章
- 使用Sqlite数据库存储数据
1.Sql基本命令 1.1.创建表 表是有行和列组成的,列称为字段,行称为记录. 使用CREATE命令来创建表: 1 CREATE TABLE tab_student (studentId INTEG ...
- 使用嵌入式关系型SQLite数据库存储数据
除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库—SQLite, 1.SQLite3支持 ...
- <Android基础> (六) 数据存储 Part 3 SQLite数据库存储
6.4 SQLite数据库存储 SQLite是一种轻量级的关系型数据库,运算速度快,占用资源少. 6.4.1 创建数据库 Android为了管理数据库,专门提供了SQLiteOpenHelper帮助类 ...
- Android学习之基础知识九 — 数据存储(持久化技术)之SQLite数据库存储
前面一讲介绍了数据持久化技术的前两种:文件存储.SharedPreferences存储.下面介绍第三种技术:SQLite数据库存储 一.SQLite数据库存储 SQLite数据库是一款轻量级的关系型数 ...
- 4、Android-数据存储方案(SQLite数据库存储)
4.4.SQLite数据库存储 这是Android内置的数据库 是一款轻量级的关系型数据库 运算速度非常快.占用资源少.通常只需要几百kb的内存就够了 因而特别适合在移动端设备上使用 SQLite不仅 ...
- Android中数据存储(三)——SQLite数据库存储数据
当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方式: 1. Share ...
- Android 数据存储之 SQLite数据库存储
----------------------------------------SQLite数据库---------------------------------------------- SQLi ...
- android开发之使用SQLite数据库存储
http://blog.csdn.net/jason0539/article/details/16360835 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且 ...
- iOS - SQLite 数据库存储
1.SQLite 数据库 SQLite 是一种轻型的嵌入式数据库,安卓和 iOS 开发使用的都是 SQLite 数据库.它占用资源非常低,在嵌入式设备中,可能需要几百 K 的内存数据就够了.他的处理速 ...
随机推荐
- Java中ArrayList循环遍历并删除元素的陷阱
ava中的ArrayList循环遍历并且删除元素时经常不小心掉坑里,昨天又碰到了,感觉有必要单独写篇文章记一下. 先写个测试代码: import java.util.ArrayList; public ...
- Java 文本I/O 处理
File类包含获得一个文件/目录的属性,以及对文件/目录进行改名和删除的方法. File类包含许多获取文件属性的方法,以及重命名和删除文件和目录的方法,但是,File类不包含读写文件内容的方法 Fil ...
- Python爬虫-爬取百度贴吧帖子
这次主要学习了替换各种标签,规范格式的方法.依然参考博主崔庆才的博客. 1.获取url 某一帖子:https://tieba.baidu.com/p/3138733512?see_lz=1&p ...
- ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Atomicity
1.前言 Atomicity是内存访问的一个属性,描述为原子性访问,包括single-copy atomicity和multi-copy atomicity 2.基本概念 observer 可以发起对 ...
- Redis简介+常用命令
Redis=REmote DIctionary Server Redis是一个使用C语言编写的开源数据库,是高性能的key-value数据库,是内存数据库,支持数据持久化. Redis常用数据类型: ...
- myeclipse的web项目导入到eclipse中
环境组成: java8 eclipse4.4.2 for javaee tomcat 7.0.61 1.导入myeclipse项目 2.设置JDK环境 3.将导入的项目修改为web项目 将myecli ...
- 01 响应式页面-@media介绍,
我们为什么要写自适应的页面(响应式页面) 众所周知,电脑.平板.手机的屏幕是差距很大的,假如在电脑上写好了一个页面,在电脑上看起来不错,但是如果放到手机上的话,那可能就会乱的一塌糊涂,这时候怎么解决呢 ...
- Ex 6_12 凸多边形的最优三角剖分..._第六次作业
假设顶点的总数为n,从0到n-1. 从序号为0的顶点开始以逆时针方向排序,对于 令子问题A[i,j]为包含顶点i,i+1, . . . j的凸多边形的最小三角剖分代价,dist(i,j)为顶点i到顶点 ...
- PYTHON-UDP
1.TCP 和 UDP 发送数据时的流程 ***** 解释 为何TCP是可靠的 是因为发送数据后必须收到确认包 2. UDP的模板代码 ***** 1.UDP协议: (数据报协议) 特点: 无连接 优 ...
- PYTHON-面向对象 继承 派生
1. 什么是继承 继承是一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类/基类/超类 继承有3个特点: 1. 子类可以遗传/重用父类的属性(解决类与类之间代码冗余的问题) 2. 在p ...