Python 如何更新光标并获得真实状态?

Python 如何更新光标并获得真实状态?,python,mysql,cursor,Python,Mysql,Cursor,有3个py文件,客户机、服务器和SQL 客户端获取计算机名和用户名,然后通过套接字发送到服务器 服务器获取数据,调用SQL更新MySQL,然后向客户端回复“OK” 现在运行服务器,运行客户端,它将成功添加数据 再次运行客户端,它将显示“已添加” 但我删除了MySQL中的数据,并再次运行客户端(服务器仍处于运行状态),它应该再次添加数据,而不是。仍显示“已添加” 如果我关闭服务器,然后再次调用它,则可以成功添加数据 如果我添加新数据,然后在MySQL中删除,也可以成功添加 只有当我添加新数据,然

有3个py文件,客户机、服务器和SQL

客户端获取计算机名和用户名,然后通过套接字发送到服务器

服务器获取数据,调用SQL更新MySQL,然后向客户端回复“OK”

现在运行服务器,运行客户端,它将成功添加数据

再次运行客户端,它将显示“已添加”

但我删除了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,而且我不能将代码复制到远程桌面。我希望这个主代码足以解决这个问题。