1. 程式人生 > >python實現用戶登陸(sqlite數據庫存儲用戶信息)

python實現用戶登陸(sqlite數據庫存儲用戶信息)

自動 入學 添加 sqlite數據庫 lec 輸入密碼 獲取 where char

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數據庫存儲用戶信息)