Python 如何更新光标并获得真实状态?
有3个py文件,客户机、服务器和SQL 客户端获取计算机名和用户名,然后通过套接字发送到服务器 服务器获取数据,调用SQL更新MySQL,然后向客户端回复“OK” 现在运行服务器,运行客户端,它将成功添加数据 再次运行客户端,它将显示“已添加” 但我删除了MySQL中的数据,并再次运行客户端(服务器仍处于运行状态),它应该再次添加数据,而不是。仍显示“已添加”Python 如何更新光标并获得真实状态?,python,mysql,cursor,Python,Mysql,Cursor,有3个py文件,客户机、服务器和SQL 客户端获取计算机名和用户名,然后通过套接字发送到服务器 服务器获取数据,调用SQL更新MySQL,然后向客户端回复“OK” 现在运行服务器,运行客户端,它将成功添加数据 再次运行客户端,它将显示“已添加” 但我删除了MySQL中的数据,并再次运行客户端(服务器仍处于运行状态),它应该再次添加数据,而不是。仍显示“已添加” 如果我关闭服务器,然后再次调用它,则可以成功添加数据 如果我添加新数据,然后在MySQL中删除,也可以成功添加 只有当我添加新数据,然
- 如果我关闭服务器,然后再次调用它,则可以成功添加数据
- 如果我添加新数据,然后在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)
'''
......
'''
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)
=============SQL==========
'''
......
'''
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)
'''
......
'''
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)
我找到了解决办法
在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):
虽然我不知道为什么最初声明的全局db和游标不能很好地工作。我希望您看到事务中的问题。但是如果看不到任何代码,就没有办法提供进一步的帮助。@DanielRoseman我
很抱歉,我不能一次发布全部代码。因为公司的政策,我必须通过远程桌面连接Internet,而且我不能将代码复制到远程桌面。我希望这个主代码足以解决这个问题。