我怎样才能得到真正的光标或者更新它或者重置它



我有三个py文件:客户端,服务器和SQL

根据我的设计,每次运行客户端时,服务器都应该调用SQL向MySQL中添加数据,或者打印'It has been added'。

但是当我得到'It has been added',然后在MySQL中删除数据,SQL不再添加数据,仍然显示'It has been added'。

根据我的设计,每次从客户端获取数据时,服务器都要调用SQL。

当我在MySQL中删除数据时,common_ID应该是False,但它仍然是最后一个数字。

def main(computer_name,user_name):
     print '==========SQL start=========='
     common_ID=searchComputerName(computer_name)
     if(common_ID):
         print'01'
         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)
     print '===========SQL end==========='
def searchComputerName(computer_name):
     print'->searchComputerName'
     c = db.cursor()
     sql="SELECT * FROM `mtk_pc_name` WHERE name='%s'"%computer_name
     print sql
     a=c.execute(sql)
     print a
     if(c.execute(sql)):
         common_ID = c.fetchone()[0]
         print common_ID
         c.close()
         return common_ID
     else:
         print'searchComputerName false'
         c.close()
         return False
服务器

def clientThread(conn):
    print'->clientThread'
    message = conn.recv(1024)
    data = message.split(' ')
    computer_name = data[0]
    user_name = data[1]
    main(computer_name,user_name)
    reply = 'OK'
    conn.sendall(reply)
    print "reply OK"
    conn.close()
    print 'clone.close'
while 1:
    conn,addr = s.accept()
    print'Connected with'+addr[0]+':'+str(addr[1])
    clientThread(conn)
    print 'Endn'

我找到解决办法了。

在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):

虽然我不知道为什么全局数据库和游标声明一开始就不能很好地工作

相关内容

最新更新