问题:如图,运行完这个用例,一直在转圈圈,后面还有几个用例等待着呢
ide还会提示,进程等待数据这样的提示,具体报错英文忘记了,刚开始的思路是,既然进程在等待,那为啥不能直接结束进程呢,然后就按照这个思路差了半天。。。别爱我,没结果
然后和同事描述了下问题,紧跟着就debug了,最终debug的结果是,数据库查询触发了异常,关闭了数据库连接后,数据库那个进程没结束,就一直等等等~
上代码:
def get_sql_connection(self): """获取数据库连接""" if self.db_type == 1: try: conn = SSHTunnelForwarder( ('xxxxxxxxx', 22), ssh_username='boarder', ssh_password=r'xxxxxxxxxxxx', remote_bind_address=('xxxxxxxx', 3306) ) conn.start() connent = pymysql.connect( host='127.0.0.1', port=conn.local_bind_port, user="xxxxxxxxxx", password="xxxxxxxxxxxxx", db=self.db_library, charset='utf8' ) return conn, connent except Exception as e: print(e) raise def db_select(self, sql): """ 数据库查询 :param sql: :return: """ print("开始数据查询,查询sql:%s" % sql) conn, connent = self.get_sql_connection() cur = connent.cursor() try: cur.execute(sql) result = cur.fetchall() cur.close() connent.close() return result
# debug的结果显示在这触发了异常,关闭连接后,就不往下走了
except Exception as e: cur.close() conn.close()
raise # 解决的办法就是加上raise
raise 的作用就是手动抛出异常
这个问题就到这了,收获:遇到问题其实应该第一时间debug一下