pandas to_sql:TypeError:无法在类似字节的对象上使用字符串模式

时间:2019-01-29 07:29:50

标签: mysql pandas

插入的DataFrame是字符串格式而不是字节格式,错误显示类似字节。这没有道理。

Traceback (most recent call last):
  File "/home/jay/gekko.ai.china/Gekko_A_Share_Update/api_update/store.py", line 43, in store_comp_basic
    df.to_sql(name=table_name, con=db_connection, if_exists=if_exists, index=False)
  File "/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py", line 2522, in to_sql
    dtype=dtype, method=method)
  File "/usr/local/lib/python3.6/dist-packages/pandas/io/sql.py", line 459, in to_sql
    chunksize=chunksize, dtype=dtype, method=method)
  File "/usr/local/lib/python3.6/dist-packages/pandas/io/sql.py", line 1173, in to_sql
    table.insert(chunksize, method=method)
  File "/usr/local/lib/python3.6/dist-packages/pandas/io/sql.py", line 685, in insert
    exec_insert(conn, keys, chunk_iter)
  File "/usr/local/lib/python3.6/dist-packages/pandas/io/sql.py", line 598, in _execute_insert
    conn.execute(self.table.insert(), data)
  File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/base.py", line 1449, in execute
    params)
  File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/base.py", line 1584, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/base.py", line 1680, in _execute_context
    context)
  File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/connectors/mysqldb.py", line 55, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "/home/jay/.local/lib/python3.6/site-packages/pymysql/cursors.py", line 189, in executemany
    m = RE_INSERT_VALUES.match(query)
TypeError: cannot use a string pattern on a bytes-like object

mysql连接引擎是sqlalchemy:

db_connection = create_engine('mysql+pymysql://{0}:{1}@{2}/{3}?charset=utf8mb4'.format(db_user, db_pwd, db_host, db_name),\
                                        pool_recycle=1,pool_timeout=57600, pool_size=100, max_overflow=200).connect()
  

我又执行了一个检查步骤,我测试了一组模拟数据并将其存储,但是再次失败,并显示以下相同的错误。

模拟数据:

import pandas as pd

df = pd.DataFrame([['test','test'],['test1','test1']])
df.to_sql(name=table_name, con=db_connection, if_exists=if_exists, index=False)

我以前从未见过如此奇怪的情况,很久以前我运行相同的代码就成功了,但是我没有修改任何代码,我试图在stackoverflow中找到解决方案,但确实找到了我。谁曾遇到过此案?

0 个答案:

没有答案