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

使用python-binance获取Binance交易对信息写入MySQL报错排查

问题排查与解决:Python 'list'无法转换为MySQL类型

这个错误的核心是你传给executemany的参数格式不符合要求,具体来说有两种常见情况:

  • 你直接把从Binance拿到的symbols字典列表传给了executemany,但它需要的是每个元素为元组/字典的列表,每个元组对应一行数据的字段值;
  • 你提取字段时不小心把某个字段的值弄成了列表类型,而MySQL的字符串字段无法直接接收列表。

正确的处理步骤:

  1. 构造符合要求的参数列表
    Binance返回的symbols是字典列表,每个字典里包含symbol、baseAsset、quoteAsset这些字符串字段。你需要遍历这个列表,把每个字典里的目标字段提取出来组装成元组,再放到一个大列表里:

    # 假设你已经通过API拿到了symbols数据
    # 方式1:普通循环
    insert_data = []
    for symbol_info in symbols:
        ticker = symbol_info['symbol']
        coin1 = symbol_info['baseAsset']
        coin2 = symbol_info['quoteAsset']
        insert_data.append( (ticker, coin1, coin2) )
    
    # 方式2:更简洁的列表推导式
    insert_data = [ (s['symbol'], s['baseAsset'], s['quoteAsset']) for s in symbols ]
    
  2. 执行executemany写入
    把构造好的insert_data传给executemany,注意SQL语句的占位符要和元组里的字段顺序对应:

    sql = "INSERT INTO param_asset_binance (Ticker, Coin1, Coin2) VALUES (%s, %s, %s)"
    cursor.executemany(sql, insert_data)
    # 别忘了提交事务
    conn.commit()
    

额外检查点:

  • 确认symbols里的symbol、baseAsset、quoteAsset都是字符串类型,不是列表(Binance返回的这些字段本身就是字符串,大概率不会有问题,但可以打印几个元素确认);
  • 检查MySQL表的字段类型:Ticker、Coin1、Coin2应该设为VARCHAR类的字符串类型,和Python的str类型匹配。

内容的提问来源于stack exchange,提问作者Mat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:12:17