python与sql sever实现登录模块时一直有密码错误的bug

后台:

# -*- coding: UTF-8 -*-
import socket               # 导入 socket 模块
import json
#import mysql.connector
import random
import threading
import os

#mysql_config = {'user':'root','password':'root','host':'127.0.0.1'
#  ,'port':'3306','database' :'droneuser','charset' :'utf8'}
#conn = mysql.connector.connect(**mysql_config)
import pyodbc

conn =pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=droneuser;UID=sa;PWD=1')
cursor =conn.cursor()



#cursor=conn.cursor()


def login(username,keys):
    sql4 = "SELECT idj FROM dbo.users WHERE username = '%s';"%username
    cursor=conn.cursor()
    cursor.execute(sql4)
    result_a = cursor.fetchone()
#通过fetchall得到的就是多行记录,是一个二维元组
    if result_a == []:
        return "账户不存在"
    else:
        sql2 = "SELECT keys FROM dbo.users WHERE username = '%s';"%username
        cursor=conn.cursor()
        cursor.execute(sql2)
        result_b = cursor.fetchone()
        if result_b[0] == keys:
            for i in result_a:
                idj=i[0]
            m = idj*20-1
            n = (idj-1)*20
            suiji = random.randint(n,m)
            
            sql6 = "SELECT miyue FROM dbo.miyue WHERE id = '%s';"%suiji
            cursor=conn.cursor()
            cursor.execute(sql6)
            result = cursor.fetchone()
            miyues = result[0]
            miyue = miyues.split('|')
            
            tmp = ['control2.py','message.txt','../phone/confirm.txt','../control/privatekey.txt']
            f2 = open(tmp[3], 'w')
            f2.write(miyue)
            f2.close()
            return "登录成功"
        else:
            return "密码不正确"

def logon(username,keys):
    pass
    sql5 = "SELECT count(idj) FROM users WHERE username = '%s'"%username
    cursor=conn.cursor()
    cursor.execute(sql5)
    result_a = cursor.fetchone()
    if result_a[0] == 1:
        return "抱歉,账户已存在"
    else:
        sql1 = "SELECT max(idj) FROM dbo.users "
        cursor=conn.cursor()
        cursor.execute(sql1)
        result = cursor.fetchone()
        for i in result:
            idj = i+1
        sql3 = "INSERT INTO [dbo].[users] (username,keys,idj)values ('%s','%s','%s');"%(username,keys,idj)
        cursor.execute(sql3)
        for i in result:
            pass
        conn.commit()
        return "注册成功('%s')"%username

s = socket.socket()         
host = socket.gethostname() 
port = 12345                
s.bind((host, port))        

s.listen(5)                 

while True:
    c, addr = s.accept()    
    jieshou = c.recv(1024)
    msg = jieshou.split('|')
    if msg[0] == 'login':
        huida = login(msg[1],msg[2])
        c.send('huida|%s'%huida)
    elif msg[0] == 'logon':
        huida = logon(msg[1],msg[2])
        c.send('huida|%s'%huida)
    else:
        pass
    c.close()                # 关闭连接

界面:

# -*- coding: UTF-8 -*-

# 登录和注册两个功能
import socket
import threading
import os
from Tkinter import *   #引用Tk模块

'''def start'''
def fun_timer():
    tmp = ['control2.py','message.txt','./confirm.txt','privatekey.txt']
    file_message = os.path.exists(tmp[2])
    # print file_message
    if file_message == True:
        t.insert(END, "%s\n"%"加密")
    else:
        t.insert(END, "%s\n"%"没有接收到信号")
    timer = threading.Timer(2,fun_timer)
    timer.start()
def login():
    username2 = username.get()
    keys2 = keys.get()
    s = socket.socket()         
    host = socket.gethostname() 
    port = 12345                
    s.connect((host, port))
    s.send('login|%s|%s'%(username2,keys2))
    huidas = s.recv(1024)
    huida = huidas.split('|')
    if huida[0] == "huida":
        t.delete('1.0',END)
        t.insert('1.0', "%s\n"%huida[1])
        if huida[1] == "登录成功":
            timer = threading.Timer(1,fun_timer)
            timer.start()
    s.close()

def logon():
    username2 =  username.get()
    keys2 = keys.get()
    s = socket.socket()        
    host = socket.gethostname() 
    port = 12345                
    s.connect((host, port))
    s.send('logon|%s|%s'%(username2,keys2))
    huidas = s.recv(1024)
    huida = huidas.split('|')
    if huida[0] == "huida":
        t.delete('1.0',END)
        t.insert('1.0', "%s\n"%huida[1])
    s.close()
'''def end'''

root = Tk()             #初始化Tk()
root.colors = "#DA70D6 Orchid"
root.title("phone login")
root.geometry('400x248')                 #是x 不是*
root.resizable(width=True, height=True) #宽不可变, 高可变,默认为True


# create a popup menu
menu2 = Menu(root, tearoff=0)
menu2.add_command(label="logon", command=logon)
menu2.add_command(label="login", command=login)
root.config(menu=menu2)

frm = Frame(root,bg='#F17C67')
frm.pack()
frm1 = Frame(frm,bg='#F17C67')
frm1.pack()
l1 = Label(frm1, text="username:", bg="#F17C67", font=("Arial", 12), width=10, height=2)
l1.pack(side=LEFT)#这里的side可以赋值为LEFT  RTGHT TOP  BOTTOM

username = StringVar()
e = Entry(frm1, textvariable = username)
username.set("")
e.config(bg ='#F17C67')
e.pack(side=RIGHT)

frm2 = Frame(frm,bg='#F17C67')
frm2.pack()
l2 = Label(frm2, text="keys:", bg="#F17C67", font=("Arial", 12), width=10, height=2)
l2.pack(side=LEFT)  # arial 无衬线字体

keys = StringVar()
e = Entry(frm2, textvariable = keys)
e.config(bg ='#F17C67')
keys.set("")
e.pack(side=RIGHT)

frm3 = Frame(frm)
frm3.pack()
t = Text(frm3)
t.config(bg='#F17C67')
t.pack()

root.mainloop()         #进入消息循环
阅读 990
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题