如何更新光标并获得不动产?
How can I update the cursor and get real state?
有3个py文件,客户端,服务器和SQL。
客户端获取计算机名和用户名,然后通过套接字发送给服务器。
服务器获取数据,调用SQL更新MySQL,然后回复'OK'给客户端。
现在运行服务器,运行客户端,添加数据成功
运行客户端再次显示'It has been added'.
但是我又删除了MySQL和运行客户端的数据(服务器还在),应该会重新添加数据 但不是 。仍然显示'It has been added'
- 如果我关闭服务器再调用,就可以成功添加数据。
- 如果我添加新数据,然后在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)
我找到了解决方案。
在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):
虽然我不知道为什么一开始声明的全局数据库和游标不能正常工作。
有3个py文件,客户端,服务器和SQL。
客户端获取计算机名和用户名,然后通过套接字发送给服务器。
服务器获取数据,调用SQL更新MySQL,然后回复'OK'给客户端。
现在运行服务器,运行客户端,添加数据成功
运行客户端再次显示'It has been added'.
但是我又删除了MySQL和运行客户端的数据(服务器还在),应该会重新添加数据 但不是 。仍然显示'It has been added'
- 如果我关闭服务器再调用,就可以成功添加数据。
- 如果我添加新数据,然后在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)
我找到了解决方案。
在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):
虽然我不知道为什么一开始声明的全局数据库和游标不能正常工作。