LogViewer
=========================================================================
2025-08-25 16:25:17 Mon	START TASK.01	future_1d  future_rank
=========================================================================
2025-08-25 16:25:19,797 - future_1d - INFO - future_rank check=True check_last=7 start...
2025-08-25 16:25:19,881 - future_1d - INFO - future_rank date = 2025-08-15
2025-08-25 16:25:20,043 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='SHFE) done
2025-08-25 16:25:20,222 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CZCE) done
2025-08-25 16:25:20,305 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='GFEX) done
2025-08-25 16:25:20,388 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='DCE) done
2025-08-25 16:25:20,492 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CFFEX) done
2025-08-25 16:25:20,562 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='INE) done
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1406, "Data too long for column 'broker' at row 1")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/project/future_1d/future_rank.py", line 8, in 
    client.save_future_rank(check=True, check_last=7)
  File "/root/project/future_1d/future1d_request.py", line 976, in save_future_rank
    data_add.to_sql(tablebase.__tablename__, self.engine, index=False, if_exists='append', chunksize=1000)
  File "/usr/local/lib/python3.10/site-packages/pandas/util/_decorators.py", line 333, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/pandas/core/generic.py", line 3106, in to_sql
    return sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 844, in to_sql
    return pandas_sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 2030, in to_sql
    total_inserted = sql_engine.insert_records(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1579, in insert_records
    raise err
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1570, in insert_records
    return table.insert(chunksize=chunksize, method=method)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1121, in insert
    num_inserted = exec_insert(conn, keys, chunk_iter)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1012, in _execute_insert
    result = conn.execute(self.table.insert(), data)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
    return meth(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'broker' at row 1")
[SQL: INSERT INTO future_rank (date, symbol, broker, vol, vol_chg, long_hld, long_chg, short_hld, short_chg, exchange, variety, comd, created_at, updated_at) VALUES (%(date)s, %(symbol)s, %(broker)s, %(vol)s, %(vol_chg)s, %(long_hld)s, %(long_chg)s, %(short_hld)s, %(short_chg)s, %(exchange)s, %(variety)s, %(comd)s, %(created_at)s, %(updated_at)s)]
[parameters: [{'date': '2025-08-15', 'symbol': 'AD', 'broker': '期货公司会员/境外特殊经纪参与者', 'vol': 2880.0, 'vol_chg': -568.0, 'long_hld': 9708.0, 'long_chg': -160.0, 'short_hld': 9708.0, 'short_chg': -160.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}, {'date': '2025-08-15', 'symbol': 'AD', 'broker': '非期货公司会员/境外特殊非经纪参与者', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '一德期货', 'vol': None, 'vol_chg': None, 'long_hld': 120.0, 'long_chg': -1.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东亚期货', 'vol': None, 'vol_chg': None, 'long_hld': 128.0, 'long_chg': -9.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东吴期货', 'vol': 62.0, 'vol_chg': -4.0, 'long_hld': None, 'long_chg': None, 'short_hld': 199.0, 'short_chg': 9.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东海期货', 'vol': 35.0, 'vol_chg': -78.0, 'long_hld': 224.0, 'long_chg': 0.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东证期货', 'vol': 100.0, 'vol_chg': -38.0, 'long_hld': 786.0, 'long_chg': -25.0, 'short_hld': 558.0, 'short_chg': -19.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '中信建投', 'vol': None, 'vol_chg': None, 'long_hld': None, 'long_chg': None, 'short_hld': 260.0, 'short_chg': -5.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}  ... displaying 10 of 1000 total bound parameter sets ...  {'date': '2025-08-15', 'symbol': 'CU2508', 'broker': '首创期货', 'vol': 120.0, 'vol_chg': -25.0, 'long_hld': None, 'long_chg': None, 'short_hld': 130.0, 'short_chg': 110.0, 'exchange': 'SHFE', 'variety': 'CU', 'comd': 'cu', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}, {'date': '2025-08-15', 'symbol': 'CU2509', 'broker': '东吴期货', 'vol': None, 'vol_chg': None, 'long_hld': 2735.0, 'long_chg': -55.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'CU', 'comd': 'cu', 'created_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 683935), 'updated_at': datetime.datetime(2025, 8, 25, 16, 25, 20, 684472)}]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)
=========================================================================
2025-08-25 16:26:20 Mon	START TASK.01	future_1d  future_rank
=========================================================================
2025-08-25 16:26:22,350 - future_1d - INFO - future_rank check=True check_last=7 start...
2025-08-25 16:26:22,433 - future_1d - INFO - future_rank date = 2025-08-15
2025-08-25 16:26:22,545 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='GFEX) done
2025-08-25 16:26:22,727 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CZCE) done
2025-08-25 16:26:22,885 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='SHFE) done
2025-08-25 16:26:22,949 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='DCE) done
2025-08-25 16:26:23,038 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CFFEX) done
2025-08-25 16:26:23,105 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='INE) done
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1406, "Data too long for column 'broker' at row 659")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/project/future_1d/future_rank.py", line 8, in 
    client.save_future_rank(check=True, check_last=7)
  File "/root/project/future_1d/future1d_request.py", line 976, in save_future_rank
    data_add.to_sql(tablebase.__tablename__, self.engine, index=False, if_exists='append', chunksize=1000)
  File "/usr/local/lib/python3.10/site-packages/pandas/util/_decorators.py", line 333, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/pandas/core/generic.py", line 3106, in to_sql
    return sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 844, in to_sql
    return pandas_sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 2030, in to_sql
    total_inserted = sql_engine.insert_records(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1579, in insert_records
    raise err
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1570, in insert_records
    return table.insert(chunksize=chunksize, method=method)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1121, in insert
    num_inserted = exec_insert(conn, keys, chunk_iter)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1012, in _execute_insert
    result = conn.execute(self.table.insert(), data)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
    return meth(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'broker' at row 659")
[SQL: INSERT INTO future_rank (date, symbol, broker, vol, vol_chg, long_hld, long_chg, short_hld, short_chg, exchange, variety, comd, created_at, updated_at) VALUES (%(date)s, %(symbol)s, %(broker)s, %(vol)s, %(vol_chg)s, %(long_hld)s, %(long_chg)s, %(short_hld)s, %(short_chg)s, %(exchange)s, %(variety)s, %(comd)s, %(created_at)s, %(updated_at)s)]
[parameters: [{'date': '2025-08-15', 'symbol': 'UR2601', 'broker': '瑞达期货(代客)', 'vol': 2520.0, 'vol_chg': -2041.0, 'long_hld': 2620.0, 'long_chg': -202.0, 'short_hld': 2909.0, 'short_chg': 304.0, 'exchange': 'CZCE', 'variety': 'UR', 'comd': 'UR', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}, {'date': '2025-08-15', 'symbol': 'UR2601', 'broker': '申银万国(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 4153.0, 'long_chg': 1101.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'CZCE', 'variety': 'UR', 'comd': 'UR', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}, {'date': '2025-08-15', 'symbol': 'UR2601', 'broker': '融达期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 2767.0, 'long_chg': -57.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'CZCE', 'variety': 'UR', 'comd': 'UR', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}, {'date': '2025-08-15', 'symbol': 'UR2601', 'broker': '金元期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 4080.0, 'long_chg': 0.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'CZCE', 'variety': 'UR', 'comd': 'UR', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}, {'date': '2025-08-15', 'symbol': 'UR2601', 'broker': '银河期货(代客)', 'vol': 9506.0, 'vol_chg': -3713.0, 'long_hld': 6912.0, 'long_chg': 454.0, 'short_hld': 8265.0, 'short_chg': 836.0, 'exchange': 'CZCE', 'variety': 'UR', 'comd': 'UR', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}, {'date': '2025-08-15', 'symbol': 'UR2601', 'broker': '齐盛期货(代客)', 'vol': 2334.0, 'vol_chg': 404.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'CZCE', 'variety': 'UR', 'comd': 'UR', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}, {'date': '2025-08-15', 'symbol': 'UR2605', 'broker': '一德期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 460.0, 'long_chg': -9.0, 'short_hld': 1030.0, 'short_chg': 10.0, 'exchange': 'CZCE', 'variety': 'UR', 'comd': 'UR', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}, {'date': '2025-08-15', 'symbol': 'UR2605', 'broker': '东吴期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 512.0, 'long_chg': 1.0, 'short_hld': 387.0, 'short_chg': -1.0, 'exchange': 'CZCE', 'variety': 'UR', 'comd': 'UR', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}  ... displaying 10 of 1000 total bound parameter sets ...  {'date': '2025-08-15', 'symbol': 'AL2510', 'broker': '海通期货', 'vol': 7155.0, 'vol_chg': 2725.0, 'long_hld': None, 'long_chg': None, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AL', 'comd': 'al', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}, {'date': '2025-08-15', 'symbol': 'AL2510', 'broker': '混沌天成', 'vol': 2838.0, 'vol_chg': 1126.0, 'long_hld': None, 'long_chg': None, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AL', 'comd': 'al', 'created_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224362), 'updated_at': datetime.datetime(2025, 8, 25, 16, 26, 23, 224877)}]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)
=========================================================================
2025-08-25 16:26:57 Mon	START TASK.01	future_1d  future_rank
=========================================================================
2025-08-25 16:26:59,809 - future_1d - INFO - future_rank check=True check_last=7 start...
2025-08-25 16:26:59,893 - future_1d - INFO - future_rank date = 2025-08-15
2025-08-25 16:27:00,021 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='SHFE) done
2025-08-25 16:27:00,095 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='DCE) done
2025-08-25 16:27:00,207 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CFFEX) done
2025-08-25 16:27:00,298 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='GFEX) done
2025-08-25 16:27:00,494 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CZCE) done
2025-08-25 16:27:00,563 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='INE) done
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1406, "Data too long for column 'broker' at row 1")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/project/future_1d/future_rank.py", line 8, in 
    client.save_future_rank(check=True, check_last=7)
  File "/root/project/future_1d/future1d_request.py", line 976, in save_future_rank
    data_add.to_sql(tablebase.__tablename__, self.engine, index=False, if_exists='append', chunksize=1000)
  File "/usr/local/lib/python3.10/site-packages/pandas/util/_decorators.py", line 333, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/pandas/core/generic.py", line 3106, in to_sql
    return sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 844, in to_sql
    return pandas_sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 2030, in to_sql
    total_inserted = sql_engine.insert_records(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1579, in insert_records
    raise err
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1570, in insert_records
    return table.insert(chunksize=chunksize, method=method)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1121, in insert
    num_inserted = exec_insert(conn, keys, chunk_iter)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1012, in _execute_insert
    result = conn.execute(self.table.insert(), data)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
    return meth(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'broker' at row 1")
[SQL: INSERT INTO future_rank (date, symbol, broker, vol, vol_chg, long_hld, long_chg, short_hld, short_chg, exchange, variety, comd, created_at, updated_at) VALUES (%(date)s, %(symbol)s, %(broker)s, %(vol)s, %(vol_chg)s, %(long_hld)s, %(long_chg)s, %(short_hld)s, %(short_chg)s, %(exchange)s, %(variety)s, %(comd)s, %(created_at)s, %(updated_at)s)]
[parameters: [{'date': '2025-08-15', 'symbol': 'AD', 'broker': '期货公司会员/境外特殊经纪参与者', 'vol': 2880.0, 'vol_chg': -568.0, 'long_hld': 9708.0, 'long_chg': -160.0, 'short_hld': 9708.0, 'short_chg': -160.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}, {'date': '2025-08-15', 'symbol': 'AD', 'broker': '非期货公司会员/境外特殊非经纪参与者', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '一德期货', 'vol': None, 'vol_chg': None, 'long_hld': 120.0, 'long_chg': -1.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东亚期货', 'vol': None, 'vol_chg': None, 'long_hld': 128.0, 'long_chg': -9.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东吴期货', 'vol': 62.0, 'vol_chg': -4.0, 'long_hld': None, 'long_chg': None, 'short_hld': 199.0, 'short_chg': 9.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东海期货', 'vol': 35.0, 'vol_chg': -78.0, 'long_hld': 224.0, 'long_chg': 0.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东证期货', 'vol': 100.0, 'vol_chg': -38.0, 'long_hld': 786.0, 'long_chg': -25.0, 'short_hld': 558.0, 'short_chg': -19.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '中信建投', 'vol': None, 'vol_chg': None, 'long_hld': None, 'long_chg': None, 'short_hld': 260.0, 'short_chg': -5.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}  ... displaying 10 of 1000 total bound parameter sets ...  {'date': '2025-08-15', 'symbol': 'CU2508', 'broker': '首创期货', 'vol': 120.0, 'vol_chg': -25.0, 'long_hld': None, 'long_chg': None, 'short_hld': 130.0, 'short_chg': 110.0, 'exchange': 'SHFE', 'variety': 'CU', 'comd': 'cu', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}, {'date': '2025-08-15', 'symbol': 'CU2509', 'broker': '东吴期货', 'vol': None, 'vol_chg': None, 'long_hld': 2735.0, 'long_chg': -55.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'CU', 'comd': 'cu', 'created_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 855824), 'updated_at': datetime.datetime(2025, 8, 25, 16, 27, 0, 856253)}]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)
=========================================================================
2025-08-25 16:27:59 Mon	START TASK.01	future_1d  future_rank
=========================================================================
2025-08-25 16:28:01,255 - future_1d - INFO - future_rank check=True check_last=7 start...
2025-08-25 16:28:01,341 - future_1d - INFO - future_rank date = 2025-08-15
2025-08-25 16:28:01,413 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='INE) done
2025-08-25 16:28:01,498 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='DCE) done
2025-08-25 16:28:01,575 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='GFEX) done
2025-08-25 16:28:01,662 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CFFEX) done
2025-08-25 16:28:01,870 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CZCE) done
2025-08-25 16:28:02,008 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='SHFE) done
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1406, "Data too long for column 'broker' at row 403")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/project/future_1d/future_rank.py", line 8, in 
    client.save_future_rank(check=True, check_last=7)
  File "/root/project/future_1d/future1d_request.py", line 976, in save_future_rank
    data_add.to_sql(tablebase.__tablename__, self.engine, index=False, if_exists='append', chunksize=1000)
  File "/usr/local/lib/python3.10/site-packages/pandas/util/_decorators.py", line 333, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/pandas/core/generic.py", line 3106, in to_sql
    return sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 844, in to_sql
    return pandas_sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 2030, in to_sql
    total_inserted = sql_engine.insert_records(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1579, in insert_records
    raise err
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1570, in insert_records
    return table.insert(chunksize=chunksize, method=method)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1121, in insert
    num_inserted = exec_insert(conn, keys, chunk_iter)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1012, in _execute_insert
    result = conn.execute(self.table.insert(), data)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
    return meth(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'broker' at row 403")
[SQL: INSERT INTO future_rank (date, symbol, broker, vol, vol_chg, long_hld, long_chg, short_hld, short_chg, exchange, variety, comd, created_at, updated_at) VALUES (%(date)s, %(symbol)s, %(broker)s, %(vol)s, %(vol_chg)s, %(long_hld)s, %(long_chg)s, %(short_hld)s, %(short_chg)s, %(exchange)s, %(variety)s, %(comd)s, %(created_at)s, %(updated_at)s)]
[parameters: [{'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '方正中期(代客)', 'vol': 108730.0, 'vol_chg': 8782.0, 'long_hld': 81727.0, 'long_chg': 4379.0, 'short_hld': 26379.0, 'short_chg': -10383.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '永安期货(代客)', 'vol': 67838.0, 'vol_chg': -6791.0, 'long_hld': 43719.0, 'long_chg': -523.0, 'short_hld': 173166.0, 'short_chg': -3035.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '浙商期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 35596.0, 'short_chg': -5112.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '海通期货(代客)', 'vol': 155164.0, 'vol_chg': 7119.0, 'long_hld': 30241.0, 'long_chg': -4171.0, 'short_hld': 33599.0, 'short_chg': 3519.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '瑞达期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 32278.0, 'short_chg': 4896.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '申银万国(代客)', 'vol': 67307.0, 'vol_chg': 9524.0, 'long_hld': 27007.0, 'long_chg': -2001.0, 'short_hld': 36593.0, 'short_chg': 2046.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '银河期货(代客)', 'vol': 160714.0, 'vol_chg': 10662.0, 'long_hld': 46307.0, 'long_chg': -3414.0, 'short_hld': 39351.0, 'short_chg': -3182.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}, {'date': '2025-08-15', 'symbol': '瓶片PR', 'broker': '东吴期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 575.0, 'long_chg': -24.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'CZCE', 'variety': 'PR', 'comd': 'PR', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}  ... displaying 10 of 1000 total bound parameter sets ...  {'date': '2025-08-15', 'symbol': 'AU2508', 'broker': '中信期货', 'vol': None, 'vol_chg': None, 'long_hld': 321.0, 'long_chg': 0.0, 'short_hld': 633.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AU', 'comd': 'au', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}, {'date': '2025-08-15', 'symbol': 'AU2508', 'broker': '光大期货', 'vol': None, 'vol_chg': None, 'long_hld': None, 'long_chg': None, 'short_hld': 102.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AU', 'comd': 'au', 'created_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310298), 'updated_at': datetime.datetime(2025, 8, 25, 16, 28, 2, 310770)}]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)
=========================================================================
2025-08-25 18:25:19 Mon	START TASK.01	future_1d  future_rank
=========================================================================
2025-08-25 18:25:21,848 - future_1d - INFO - future_rank check=True check_last=7 start...
2025-08-25 18:25:21,978 - future_1d - INFO - future_rank date = 2025-08-15
2025-08-25 18:25:22,124 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='SHFE) done
2025-08-25 18:25:22,223 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='GFEX) done
2025-08-25 18:25:22,389 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CZCE) done
2025-08-25 18:25:22,460 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='INE) done
2025-08-25 18:25:22,532 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='DCE) done
2025-08-25 18:25:22,615 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CFFEX) done
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1406, "Data too long for column 'broker' at row 1")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/project/future_1d/future_rank.py", line 8, in 
    client.save_future_rank(check=True, check_last=7)
  File "/root/project/future_1d/future1d_request.py", line 976, in save_future_rank
    data_add.to_sql(tablebase.__tablename__, self.engine, index=False, if_exists='append', chunksize=1000)
  File "/usr/local/lib/python3.10/site-packages/pandas/util/_decorators.py", line 333, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/pandas/core/generic.py", line 3106, in to_sql
    return sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 844, in to_sql
    return pandas_sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 2030, in to_sql
    total_inserted = sql_engine.insert_records(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1579, in insert_records
    raise err
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1570, in insert_records
    return table.insert(chunksize=chunksize, method=method)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1121, in insert
    num_inserted = exec_insert(conn, keys, chunk_iter)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1012, in _execute_insert
    result = conn.execute(self.table.insert(), data)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
    return meth(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'broker' at row 1")
[SQL: INSERT INTO future_rank (date, symbol, broker, vol, vol_chg, long_hld, long_chg, short_hld, short_chg, exchange, variety, comd, created_at, updated_at) VALUES (%(date)s, %(symbol)s, %(broker)s, %(vol)s, %(vol_chg)s, %(long_hld)s, %(long_chg)s, %(short_hld)s, %(short_chg)s, %(exchange)s, %(variety)s, %(comd)s, %(created_at)s, %(updated_at)s)]
[parameters: [{'date': '2025-08-15', 'symbol': 'AD', 'broker': '期货公司会员/境外特殊经纪参与者', 'vol': 2880.0, 'vol_chg': -568.0, 'long_hld': 9708.0, 'long_chg': -160.0, 'short_hld': 9708.0, 'short_chg': -160.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}, {'date': '2025-08-15', 'symbol': 'AD', 'broker': '非期货公司会员/境外特殊非经纪参与者', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '一德期货', 'vol': None, 'vol_chg': None, 'long_hld': 120.0, 'long_chg': -1.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东亚期货', 'vol': None, 'vol_chg': None, 'long_hld': 128.0, 'long_chg': -9.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东吴期货', 'vol': 62.0, 'vol_chg': -4.0, 'long_hld': None, 'long_chg': None, 'short_hld': 199.0, 'short_chg': 9.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东海期货', 'vol': 35.0, 'vol_chg': -78.0, 'long_hld': 224.0, 'long_chg': 0.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '东证期货', 'vol': 100.0, 'vol_chg': -38.0, 'long_hld': 786.0, 'long_chg': -25.0, 'short_hld': 558.0, 'short_chg': -19.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}, {'date': '2025-08-15', 'symbol': 'AD2511', 'broker': '中信建投', 'vol': None, 'vol_chg': None, 'long_hld': None, 'long_chg': None, 'short_hld': 260.0, 'short_chg': -5.0, 'exchange': 'SHFE', 'variety': 'AD', 'comd': 'ad', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}  ... displaying 10 of 1000 total bound parameter sets ...  {'date': '2025-08-15', 'symbol': 'CU2508', 'broker': '首创期货', 'vol': 120.0, 'vol_chg': -25.0, 'long_hld': None, 'long_chg': None, 'short_hld': 130.0, 'short_chg': 110.0, 'exchange': 'SHFE', 'variety': 'CU', 'comd': 'cu', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}, {'date': '2025-08-15', 'symbol': 'CU2509', 'broker': '东吴期货', 'vol': None, 'vol_chg': None, 'long_hld': 2735.0, 'long_chg': -55.0, 'short_hld': None, 'short_chg': None, 'exchange': 'SHFE', 'variety': 'CU', 'comd': 'cu', 'created_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955380), 'updated_at': datetime.datetime(2025, 8, 25, 18, 25, 22, 955842)}]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)
=========================================================================
2025-08-25 18:26:18 Mon	START TASK.01	future_1d  future_rank
=========================================================================
2025-08-25 18:26:20,677 - future_1d - INFO - future_rank check=True check_last=7 start...
2025-08-25 18:26:20,764 - future_1d - INFO - future_rank date = 2025-08-15
2025-08-25 18:26:20,854 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='GFEX) done
2025-08-25 18:26:20,945 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CFFEX) done
2025-08-25 18:26:21,018 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='INE) done
2025-08-25 18:26:21,192 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CZCE) done
2025-08-25 18:26:21,339 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='SHFE) done
2025-08-25 18:26:21,426 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='DCE) done
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1406, "Data too long for column 'broker' at row 403")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/project/future_1d/future_rank.py", line 8, in 
    client.save_future_rank(check=True, check_last=7)
  File "/root/project/future_1d/future1d_request.py", line 976, in save_future_rank
    data_add.to_sql(tablebase.__tablename__, self.engine, index=False, if_exists='append', chunksize=1000)
  File "/usr/local/lib/python3.10/site-packages/pandas/util/_decorators.py", line 333, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/pandas/core/generic.py", line 3106, in to_sql
    return sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 844, in to_sql
    return pandas_sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 2030, in to_sql
    total_inserted = sql_engine.insert_records(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1579, in insert_records
    raise err
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1570, in insert_records
    return table.insert(chunksize=chunksize, method=method)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1121, in insert
    num_inserted = exec_insert(conn, keys, chunk_iter)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1012, in _execute_insert
    result = conn.execute(self.table.insert(), data)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
    return meth(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'broker' at row 403")
[SQL: INSERT INTO future_rank (date, symbol, broker, vol, vol_chg, long_hld, long_chg, short_hld, short_chg, exchange, variety, comd, created_at, updated_at) VALUES (%(date)s, %(symbol)s, %(broker)s, %(vol)s, %(vol_chg)s, %(long_hld)s, %(long_chg)s, %(short_hld)s, %(short_chg)s, %(exchange)s, %(variety)s, %(comd)s, %(created_at)s, %(updated_at)s)]
[parameters: [{'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '方正中期(代客)', 'vol': 108730.0, 'vol_chg': 8782.0, 'long_hld': 81727.0, 'long_chg': 4379.0, 'short_hld': 26379.0, 'short_chg': -10383.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '永安期货(代客)', 'vol': 67838.0, 'vol_chg': -6791.0, 'long_hld': 43719.0, 'long_chg': -523.0, 'short_hld': 173166.0, 'short_chg': -3035.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '浙商期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 35596.0, 'short_chg': -5112.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '海通期货(代客)', 'vol': 155164.0, 'vol_chg': 7119.0, 'long_hld': 30241.0, 'long_chg': -4171.0, 'short_hld': 33599.0, 'short_chg': 3519.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '瑞达期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 32278.0, 'short_chg': 4896.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '申银万国(代客)', 'vol': 67307.0, 'vol_chg': 9524.0, 'long_hld': 27007.0, 'long_chg': -2001.0, 'short_hld': 36593.0, 'short_chg': 2046.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '银河期货(代客)', 'vol': 160714.0, 'vol_chg': 10662.0, 'long_hld': 46307.0, 'long_chg': -3414.0, 'short_hld': 39351.0, 'short_chg': -3182.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}, {'date': '2025-08-15', 'symbol': '瓶片PR', 'broker': '东吴期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 575.0, 'long_chg': -24.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'CZCE', 'variety': 'PR', 'comd': 'PR', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}  ... displaying 10 of 1000 total bound parameter sets ...  {'date': '2025-08-15', 'symbol': 'AU2508', 'broker': '中信期货', 'vol': None, 'vol_chg': None, 'long_hld': 321.0, 'long_chg': 0.0, 'short_hld': 633.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AU', 'comd': 'au', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}, {'date': '2025-08-15', 'symbol': 'AU2508', 'broker': '光大期货', 'vol': None, 'vol_chg': None, 'long_hld': None, 'long_chg': None, 'short_hld': 102.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AU', 'comd': 'au', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782148), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 21, 782622)}]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)
=========================================================================
2025-08-25 18:26:55 Mon	START TASK.01	future_1d  future_rank
=========================================================================
2025-08-25 18:26:57,199 - future_1d - INFO - future_rank check=True check_last=7 start...
2025-08-25 18:26:57,284 - future_1d - INFO - future_rank date = 2025-08-15
2025-08-25 18:26:57,394 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CFFEX) done
2025-08-25 18:26:57,568 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CZCE) done
2025-08-25 18:26:57,641 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='INE) done
2025-08-25 18:26:57,723 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='DCE) done
2025-08-25 18:26:57,887 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='SHFE) done
2025-08-25 18:26:57,973 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='GFEX) done
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1406, "Data too long for column 'broker' at row 403")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/project/future_1d/future_rank.py", line 8, in 
    client.save_future_rank(check=True, check_last=7)
  File "/root/project/future_1d/future1d_request.py", line 976, in save_future_rank
    data_add.to_sql(tablebase.__tablename__, self.engine, index=False, if_exists='append', chunksize=1000)
  File "/usr/local/lib/python3.10/site-packages/pandas/util/_decorators.py", line 333, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/pandas/core/generic.py", line 3106, in to_sql
    return sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 844, in to_sql
    return pandas_sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 2030, in to_sql
    total_inserted = sql_engine.insert_records(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1579, in insert_records
    raise err
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1570, in insert_records
    return table.insert(chunksize=chunksize, method=method)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1121, in insert
    num_inserted = exec_insert(conn, keys, chunk_iter)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1012, in _execute_insert
    result = conn.execute(self.table.insert(), data)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
    return meth(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'broker' at row 403")
[SQL: INSERT INTO future_rank (date, symbol, broker, vol, vol_chg, long_hld, long_chg, short_hld, short_chg, exchange, variety, comd, created_at, updated_at) VALUES (%(date)s, %(symbol)s, %(broker)s, %(vol)s, %(vol_chg)s, %(long_hld)s, %(long_chg)s, %(short_hld)s, %(short_chg)s, %(exchange)s, %(variety)s, %(comd)s, %(created_at)s, %(updated_at)s)]
[parameters: [{'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '方正中期(代客)', 'vol': 108730.0, 'vol_chg': 8782.0, 'long_hld': 81727.0, 'long_chg': 4379.0, 'short_hld': 26379.0, 'short_chg': -10383.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '永安期货(代客)', 'vol': 67838.0, 'vol_chg': -6791.0, 'long_hld': 43719.0, 'long_chg': -523.0, 'short_hld': 173166.0, 'short_chg': -3035.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '浙商期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 35596.0, 'short_chg': -5112.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '海通期货(代客)', 'vol': 155164.0, 'vol_chg': 7119.0, 'long_hld': 30241.0, 'long_chg': -4171.0, 'short_hld': 33599.0, 'short_chg': 3519.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '瑞达期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 32278.0, 'short_chg': 4896.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '申银万国(代客)', 'vol': 67307.0, 'vol_chg': 9524.0, 'long_hld': 27007.0, 'long_chg': -2001.0, 'short_hld': 36593.0, 'short_chg': 2046.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '银河期货(代客)', 'vol': 160714.0, 'vol_chg': 10662.0, 'long_hld': 46307.0, 'long_chg': -3414.0, 'short_hld': 39351.0, 'short_chg': -3182.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}, {'date': '2025-08-15', 'symbol': '瓶片PR', 'broker': '东吴期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 575.0, 'long_chg': -24.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'CZCE', 'variety': 'PR', 'comd': 'PR', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}  ... displaying 10 of 1000 total bound parameter sets ...  {'date': '2025-08-15', 'symbol': 'AU2508', 'broker': '中信期货', 'vol': None, 'vol_chg': None, 'long_hld': 321.0, 'long_chg': 0.0, 'short_hld': 633.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AU', 'comd': 'au', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}, {'date': '2025-08-15', 'symbol': 'AU2508', 'broker': '光大期货', 'vol': None, 'vol_chg': None, 'long_hld': None, 'long_chg': None, 'short_hld': 102.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AU', 'comd': 'au', 'created_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322365), 'updated_at': datetime.datetime(2025, 8, 25, 18, 26, 58, 322822)}]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)
=========================================================================
2025-08-25 18:27:44 Mon	START TASK.01	future_1d  future_rank
=========================================================================
2025-08-25 18:27:46,419 - future_1d - INFO - future_rank check=True check_last=7 start...
2025-08-25 18:27:46,504 - future_1d - INFO - future_rank date = 2025-08-15
2025-08-25 18:27:46,629 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CFFEX) done
2025-08-25 18:27:46,699 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='DCE) done
2025-08-25 18:27:46,794 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='GFEX) done
2025-08-25 18:27:46,962 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='CZCE) done
2025-08-25 18:27:47,124 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='SHFE) done
2025-08-25 18:27:47,204 - future_1d - INFO - pro.fut_holding(trade_date='2025-08-15',exchange='INE) done
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1406, "Data too long for column 'broker' at row 403")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/project/future_1d/future_rank.py", line 8, in 
    client.save_future_rank(check=True, check_last=7)
  File "/root/project/future_1d/future1d_request.py", line 976, in save_future_rank
    data_add.to_sql(tablebase.__tablename__, self.engine, index=False, if_exists='append', chunksize=1000)
  File "/usr/local/lib/python3.10/site-packages/pandas/util/_decorators.py", line 333, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/pandas/core/generic.py", line 3106, in to_sql
    return sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 844, in to_sql
    return pandas_sql.to_sql(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 2030, in to_sql
    total_inserted = sql_engine.insert_records(
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1579, in insert_records
    raise err
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1570, in insert_records
    return table.insert(chunksize=chunksize, method=method)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1121, in insert
    num_inserted = exec_insert(conn, keys, chunk_iter)
  File "/usr/local/lib/python3.10/site-packages/pandas/io/sql.py", line 1012, in _execute_insert
    result = conn.execute(self.table.insert(), data)
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
    return meth(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1936, in _exec_single_context
    self.dialect.do_executemany(
  File "/usr/local/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 196, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 187, in executemany
    return self._do_execute_many(
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 225, in _do_execute_many
    rows += self.execute(sql + postfix)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/usr/local/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'broker' at row 403")
[SQL: INSERT INTO future_rank (date, symbol, broker, vol, vol_chg, long_hld, long_chg, short_hld, short_chg, exchange, variety, comd, created_at, updated_at) VALUES (%(date)s, %(symbol)s, %(broker)s, %(vol)s, %(vol_chg)s, %(long_hld)s, %(long_chg)s, %(short_hld)s, %(short_chg)s, %(exchange)s, %(variety)s, %(comd)s, %(created_at)s, %(updated_at)s)]
[parameters: [{'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '方正中期(代客)', 'vol': 108730.0, 'vol_chg': 8782.0, 'long_hld': 81727.0, 'long_chg': 4379.0, 'short_hld': 26379.0, 'short_chg': -10383.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '永安期货(代客)', 'vol': 67838.0, 'vol_chg': -6791.0, 'long_hld': 43719.0, 'long_chg': -523.0, 'short_hld': 173166.0, 'short_chg': -3035.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '浙商期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 35596.0, 'short_chg': -5112.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '海通期货(代客)', 'vol': 155164.0, 'vol_chg': 7119.0, 'long_hld': 30241.0, 'long_chg': -4171.0, 'short_hld': 33599.0, 'short_chg': 3519.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '瑞达期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 0.0, 'long_chg': 0.0, 'short_hld': 32278.0, 'short_chg': 4896.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '申银万国(代客)', 'vol': 67307.0, 'vol_chg': 9524.0, 'long_hld': 27007.0, 'long_chg': -2001.0, 'short_hld': 36593.0, 'short_chg': 2046.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}, {'date': '2025-08-15', 'symbol': '玻璃FG', 'broker': '银河期货(代客)', 'vol': 160714.0, 'vol_chg': 10662.0, 'long_hld': 46307.0, 'long_chg': -3414.0, 'short_hld': 39351.0, 'short_chg': -3182.0, 'exchange': 'CZCE', 'variety': 'FG', 'comd': 'FG', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}, {'date': '2025-08-15', 'symbol': '瓶片PR', 'broker': '东吴期货(代客)', 'vol': 0.0, 'vol_chg': 0.0, 'long_hld': 575.0, 'long_chg': -24.0, 'short_hld': 0.0, 'short_chg': 0.0, 'exchange': 'CZCE', 'variety': 'PR', 'comd': 'PR', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}  ... displaying 10 of 1000 total bound parameter sets ...  {'date': '2025-08-15', 'symbol': 'AU2508', 'broker': '中信期货', 'vol': None, 'vol_chg': None, 'long_hld': 321.0, 'long_chg': 0.0, 'short_hld': 633.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AU', 'comd': 'au', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}, {'date': '2025-08-15', 'symbol': 'AU2508', 'broker': '光大期货', 'vol': None, 'vol_chg': None, 'long_hld': None, 'long_chg': None, 'short_hld': 102.0, 'short_chg': 0.0, 'exchange': 'SHFE', 'variety': 'AU', 'comd': 'au', 'created_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559484), 'updated_at': datetime.datetime(2025, 8, 25, 18, 27, 47, 559961)}]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)