python生成数据库登录界面_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("进入用户操作")

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值