Python自定义函数findbasecoin调用返回None问题求助
问题原因及解决办法
核心原因:你的
findbasecoin函数没有显式返回值。Python规定,函数如果没有写return语句,执行完毕后会默认返回None。你在函数内部循环给result赋值,只是在函数内部使用了这个变量,但没有把它返回给调用者,所以外部调用时拿到的就是None。修改方案:
根据你的查询结果数量选择对应的写法:- 若查询结果仅一条:
def findbasecoin(Ticker): mycursor.execute(f"SELECT `param_basecoin`.`Symbol` FROM `param_asset` INNER JOIN `param_pair` ON `param_asset`.`id_pair` = `param_pair`.`pair_id` INNER JOIN `param_basecoin` ON `param_pair`.`Coin2_id` = `param_basecoin`.`basecoin_id` WHERE `param_asset`.`Ticker` LIKE '{Ticker.lower()}';") result = mycursor.fetchone() # 检查是否有结果,避免索引报错 return result[0] if result else None- 若查询结果可能多条,需要返回所有结果:
def findbasecoin(Ticker): mycursor.execute(f"SELECT `param_basecoin`.`Symbol` FROM `param_asset` INNER JOIN `param_pair` ON `param_asset`.`id_pair` = `param_pair`.`pair_id` INNER JOIN `param_basecoin` ON `param_pair`.`Coin2_id` = `param_basecoin`.`basecoin_id` WHERE `param_asset`.`Ticker` LIKE '{Ticker.lower()}';") return [row[0] for row in mycursor]额外提醒:你当前用f-string拼接SQL语句存在SQL注入风险,建议改用参数化查询,示例:
mycursor.execute( "SELECT `param_basecoin`.`Symbol` FROM `param_asset` INNER JOIN `param_pair` ON `param_asset`.`id_pair` = `param_pair`.`pair_id` INNER JOIN `param_basecoin` ON `param_pair`.`Coin2_id` = `param_basecoin`.`basecoin_id` WHERE `param_asset`.`Ticker` LIKE %s;", (Ticker.lower(),) )
内容的提问来源于stack exchange,提问作者Mat
相关产品推荐
相关产品推荐

