python實現用戶登陸(sqlite數據庫存儲用戶信息)
阿新 • • 發佈:2019-01-19
自動 入學 添加 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數據庫存儲用戶信息)