python語言 如何做到聊天室登入連線資料庫

2021-09-05 10:00:18 字數 2868 閱讀 8783

聊天室是通訊工具,任何人都可以註冊,註冊好了下回人可以登入並載入相關資訊,作為新手,如何把聊天室登入功能做到連線資料庫就很重要,這裡簡單介紹一下,連線的資料庫為mysql為例

先寫乙個mysqlpython 檔案,用模組pymysql連線資料庫,運算元據庫,**見如下:

import pymysql

class mysqlpython:

def __init__(self,host='localhost',

user='root',

password='123456',

database='db5',

charset='utf8',

port=3306):

self.host=host

self.user=user

self.password=password

self.database=database

self.charset=charset

self.port=port

#定義兩個方法,建立兩個物件

def open(self):

self.db=pymysql.connect(host=self.host,

user=self.user,

password=self.password,

database=self.database,

charset=self.charset,

port=self.port)

self.cur=self.db.cursor()

def close(self):

self.cur.close()

self.db.close()

def execution(self,sql,l=):

self.open()

self.cur.execute(sql,l)

self.db.commit()

self.close()

def fetchall(self,sql,l=):

self.open()

self.cur.execute(sql,l)

#取出查詢結果

result=self.cur.fetchall()

self.close()

return result

然後寫登入功能,匯入上面模組檔案,達到登入資訊用資料庫儲存與查詢,具體**見下面:

from mysqlpython import mysqlpython 

from hashlib import sha1

#註冊使用者名稱功能

def register():

#建立資料庫連線物件

sqlh=mysqlpython()

while true:

uname=input('請輸入註冊使用者名稱:')

if not uname:

print('使用者名稱不能為空')

continue

#查詢資料庫中使用者表,查出結果為元祖(大元祖套小元組)

sele='select name from user where name=%s'

l=list(sqlh.fetchall(sele,[uname]))

if len(l)!=0:

#元組中第一項為姓名

print('此使用者名稱已註冊,請重新註冊!')

continue

else:

pwd1=input('請輸入密碼:')

pwd2=input('請再次輸入密碼:')

#註冊成功後存入到資料庫表中(表字段為姓名,密碼)

#輸入密碼,讓使用者註冊

if pwd1==pwd2:

#把密碼加密存入資料庫

#1建立sha1加密物件

s=sha1()

#2.加密,引數一定要為bytes資料型別

#加密只能對位元組流加密,不能對字串加密

s.update(pwd1.encode('utf-8'))

#3.返回十六進製制加密結果

pwd=s.hexdigest()

#註冊成功後存入到資料庫表中(表字段為姓名,密碼)

ins='insert into user values(%s,%s)'

sqlh.execution(ins,[uname,pwd])

print('註冊成功')

return

else:

print('兩次密碼不一致')

#登入驗證功能

def logintest():#驗證使用者名稱密碼輸入正確否,可否登入

sqlh=mysqlpython()

count=0

while count<4:

uname = input('請輸入使用者名稱:')

pwd = input('請輸入密碼:')

count+=1

#到資料庫查詢該使用者密碼,檢視是否為空

sele = 'select password from user where name = %s'

r=sqlh.fetchall(sele,[uname])

s = sha1()

s.update(pwd.encode('utf-8'))

pwd = s.hexdigest()

if len(r) == 0:

print('使用者名稱錯誤')

elif pwd == r[0][0]:

print('登入成功')

return uname

else:

print('密碼錯誤')

else:

print('輸錯超過三次,停止輸入')

return

Python簡單多人聊天室

伺服器端 auther kele 匯入socket包 import socket,threading 建立乙個socket物件 server socket.socket socket.af inet,socket.sock stream 獲取本地ip host socket.gethostname ...

Python之實現聊天室

from socket import import threading s1 socket af inet,sock dgram localhost 192.168.2.216 8077 otherhost 192.168.2.216 8088 s1.bind localhost defmain p...

基於python的聊天室

server用於中轉訊息,如果想要實現真實的聊天室,必須將server的ip設定為雲服務,或者公網ip from socket import from select import select defmain main 主函式 server socket af inet,sock stream 建立...