【PYTHON】【DB】使用pymssql查询表,如何判断查询结果是否为空

总有那些知识点,错了一万遍也不带记住的。

 

事情是这样的。我需要使用pymssql去表中查询一个值。某些情况下,查询的结果为空,因此我需要先判断是否为空,非空的话再取出我需要的值,否则就会报错。

import pymssql
import logging
import traceback

# logger 的setup省略了


server = 'XXX'
user = 'XXX'
password = 'XXX'
database = 'XXX'
try:
    conn = pymssql.connect(server, user, password, database)
    cusor = conn.cursor()
    cusor.execute(sql)
    
    if cursor is not None:  # 注意这里。单纯判断cursor是否为None是不够的
        row = cursor.fetchone()    
        what_i_want = row[0]  # 当查询结果为空时,这里会报错


except Exception as e:
    msg = str(e)
    logger.error('error happened in qureying database. error msg is [' + msg + ']. SQL is [' + sql + ']',
                 exc_info=True)
    logger.error(traceback.format_exc())


当查询结果集为空时,cursor是不为None的。但是cursor.fetchone()为None。

 

另外在row = cursor.fetchone()之前,cursor.rowcount为0。但查询资料得知,它只有在所有条目都被fetch了之后才有意义。的确,当我执行了row = cursor.fetchone()之后,这个值就变成了1。

 

所以修改code:

 

# ...
    if cursor is not None:  # 注意这里。单纯判断cursor是否为None是不够的
        row = cursor.fetchone()  
        if row is not None:  
            what_i_want = row[0]  

#...

 

问题解决

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值