接着上一篇的代码做了一下优化。上一篇在获取查询结果时使用了fetchone,现在改成fetchall来减少对数据库的操作:

#coding:utf-8
import pymssql
def connect():
connect=pymssql.connect((‘xxxx’),‘xx’,‘xxxx’,‘xxxx’)

cursor = connect.cursor()  # 创建游标
sql001='select *from xxxxx where xxxxx=273and Status=1 order by sysno desc'#查询语句
cursor.execute(sql001)
row=cursor.fetchone()#读取查询结果
print(row)
if row==None:
    print("没有查到数据")
else:


    while row:
        print("sysno=%s" % (row[0]))
        cursor.execute("update xxxxxset Status=-1 where SysNo=%d", row[0])  # 执行语句\
        connect.commit()
        print(row)
        cursor.execute(sql001)
        row=cursor.fetchone()
        #print(row)

connect()
这个也能实现我的所需要的功能,就是把查询出来的数据的syson作为update语句的条件。这个不好的就是在循环时没循环一次就要调用数据连接执行sql语句,会影响性能和加大资源的开销。
现在改成的代码如下:
#coding:utf-8
import pymssql
def connect():
connect=pymssql.connect((‘xxxxx’),‘sa’,‘xxxxx’,‘xxxxxx’)

cursor = connect.cursor()  # 创建游标
sql001='select *from xxxx where xxxx=273and Status=1 order by sysno desc'#查询语句
cursor.execute(sql001)
#row=cursor.fetchone()#读取查询结果
rowall=cursor.fetchall()#获取所有查询结果
print(rowall)
i=0



#print(row)
if rowall==[]:
    print("没有查到数据")
else:


    while i

connect()
之前使用了fetchone 现在使用fetchall一次那多所有查询结果再用while 获取所需要的值,这样就会减少执行完update语句再次执行一次查询语句,减少了对数据库的操作。

你可能感兴趣的:(python)