You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自定义函数findbasecoin调用返回None问题求助

问题原因及解决办法
  • 核心原因:你的findbasecoin函数没有显式返回值。Python规定,函数如果没有写return语句,执行完毕后会默认返回None。你在函数内部循环给result赋值,只是在函数内部使用了这个变量,但没有把它返回给调用者,所以外部调用时拿到的就是None。

  • 修改方案:
    根据你的查询结果数量选择对应的写法:

    1. 若查询结果仅一条:
    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
    
    1. 若查询结果可能多条,需要返回所有结果:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:42:19