1

您好我正在尝试使用 df.to_sql 将数据帧写入我的 sql 数据库,但是我收到错误消息:TypeError: cannot use a string pattern on a bytes-like object。我正在使用 Python 3。

我在我的驱动器上使用了一条路径,很遗憾我不能分享。但是当我只想使用打开 csv 文件时它工作正常。 df = pd.read_csv(path, delimiter=';', engine='python', low_memory=True, encoding='utf-8-sig') 我正在使用编码项,否则它们在我的索引列中是一个奇怪的对象。但也没有使用编码我得到同样的错误。

我也在df.dtypes我的数据框上使用过,但没有字节对象。只有 int、objects 和 floats。我还试图弄清楚我的数据框中是否有类似字节的对象,bytes(df[x]).decode('utf-8')但我只得到整数列而不是对象列。我试图解码然后使用 to_sql 但没有任何帮助。 df.to_sql('DMM_2300', con=engine, index=False, if_exists='append')

有人可以帮忙吗?

    method=method,
  File "C:\Users\Bkuijer\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 521, in to_sql
    method=method,
  File "C:\Users\Bkuijer\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 1317, in to_sql
    table.insert(chunksize, method=method)
  File "C:\Users\Bkuijer\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 755, in insert
    exec_insert(conn, keys, chunk_iter)
  File "C:\Users\Bkuijer\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 669, in _execute_insert
    conn.execute(self.table.insert(), data)
  File "C:\Users\Bkuijer\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\engine\base.py", line 1449, in execute
    params)
  File "C:\Users\Bkuijer\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\engine\base.py", line 1584, in _execute_clauseelement
    compiled_sql, distilled_params
  File "C:\Users\Bkuijer\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\engine\base.py", line 1680, in _execute_context
    context)
  File "C:\Users\Bkuijer\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\connectors\mysqldb.py", line 55, in do_executemany
    rowcount = cursor.executemany(statement, parameters)
  File "C:\Users\Bkuijer\AppData\Local\Programs\Python\Python37-32\lib\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 ```
4

1 回答 1

1

我找到了答案。我安装了旧版本的 sqlaclhemy 0.7。将其更新到最新的 1.3.18 版本后,错误消失了。

于 2020-07-31T09:48:22.983 回答