有3个py文件,Client,Server和SQL。
客户端获取计算机名和用户名,然后通过套接字发送到服务器。
服务器获取数据,调用SQL更新MySQL,然后回复“确认”给客户。
现在运行服务器,运行客户端,它将成功添加数据。
再次运行客户端,它会显示'已添加'
但是我删除了MySQL中的数据并再次运行客户端(服务器仍然在),它应该再次添加数据但不是。仍然显示'它已被添加'
==========服务器==========
'''
......
'''
def clientThread(conn):
message = conn.recv(1024)
data = message.split(' ')
computer_name = data[0]
user_name = data[1]
main(computer_name,user_name) //call SQL
reply = 'OK'
conn.sendall(reply)
conn.close()
while 1:
conn,addr = s.accept()
clientThread(conn)
========== SQL ==========
'''
......
'''
def searchComputerName(computer_name):
c = db.cursor()
sql="SELECT * FROM `mtk_pc_name` WHERE name='%s'"%computer_name
if(c.execute(sql)):
common_ID = c.fetchone()[0]
c.close()
return common_ID
else:
print'searchComputerName false'
c.close()
return False
def main(computer_name,user_name):
common_ID=searchComputerName(computer_name)
if(common_ID):
if(compareUserName(common_ID,user_name)):
print"It has been added."
else:
updateUserName(common_ID,user_name)
else:
common_ID=searchUserName(user_name)
if(common_ID):
updateComputerName(common_ID,computer_name)
else:
addNewItem(user_name,computer_name)
答案 0 :(得分:0)
我找到了解决方案。
在SQL中的每个函数中添加以下内容:
db = MySQLdb.connect(host=hostName,user=userName,passwd=password,db=database)
cursor=db.cursor()
现在工作正常。
显然我会把它作为函数的参数提取出来。最后,它看起来像这样:
def searchComputerName(computer_name,cursor):
def addNewItem(user_name,computer_name,cursor,db):
虽然我不知道为什么最初声明的全局数据库和游标效果不好。