相关文章推荐
爽快的红烧肉  ·  AFNetworking 3.0 ...·  1 年前    · 
帅气的鸵鸟  ·  python - Dask how to ...·  1 年前    · 
聪明的椅子  ·  sql ...·  1 年前    · 

to_sql()错误。TypeError: expected bytes, str found

0 人关注

我试图从Pythhon上传一个DF到sql server。

steps:

  • file imported from excel (xlsx)- OK
  • sqlalchemy engine- OK
  • error: SystemError: <class 'pyodbc.ProgrammingError'> returned a result with an error set. expected bytes, str found

    from sqlalchemy import create_engine 
    import urllib
    import pandas as pd
    df.to_sql('table_name', con=engine, if_exists='replace', index=False)
    

    df.info() gives:

    col1              5490 non-null int64
    col2              5414 non-null object
    col3              5490 non-null object
    col4              5490 non-null object
    col5              3921 non-null object
    col6              5490 non-null object
    col7              5490 non-null int64
    col8              5490 non-null object
    col9              5490 non-null object
    col10             5490 non-null object
    

    在sql表中的列类型是[int][varchar](max)

    TypeError: 预期的字节,发现了str

    1 个评论
    粘贴整个错误的堆栈跟踪。
    python
    pandas
    sqlalchemy
    pyodbc
    Manny
    Manny
    发布于 2020-08-30
    1 个回答
    Manny
    Manny
    发布于 2020-08-31
    已采纳
    0 人赞同

    我的解决办法是改变df对象的编码,如下所示。

    for name, values in df.iteritems():
            if df[name].dtype == 'object':
                print(name)
                print(df[name].dtype)