TypeError: Объект байтов типа не JSON-сериализуемый с pd.read_sql - PullRequest
0 голосов
/ 15 октября 2019

Не уверен, почему я получаю следующую ошибку: Ошибка типа: Объект байтов типа не сериализуем в JSON , когда я запускаю ниже ... какие-нибудь идеи?

import pyodbc 
    conn = pyodbc.connect('Driver={SQL Server Native Client 11.0};'
                          'Server=LDN01939344;'
                          'Database=EData;'
                          'Trusted_Connection=yes;'
                         )

sql = 'SELECT top 100 * from EData.dbo.DTData'
data = pd.read_sql(sql,conn)

app = dash.Dash(__name__)
app.layout = dash_table.DataTable(
    id='table',
    columns=[{"name": i, "id": i} for i in data.columns],
    data=data.to_dict('records'),

     style_header={
        'backgroundColor': 'rgb(230, 230, 230)',
        'fontWeight': 'bold'
    }

)

if __name__ == '__main__':
    app.run_server(debug=False,ssl_context='adhoc')

тогда я получаю эту ошибку - любая идея, что я могу сделать ???

  File "C:\Users\zoeS\AppData\Local\Continuum\anaconda3\lib\json\__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "C:\Users\zoeS-a\AppData\Roaming\Python\Python37\site-packages\_plotly_utils\utils.py", line 44, in encode
    encoded_o = super(PlotlyJSONEncoder, self).encode(o)
  File "C:\Users\zoeS\AppData\Local\Continuum\anaconda3\lib\json\encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "C:\Users\zoeS\AppData\Local\Continuum\anaconda3\lib\json\encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "C:\Users\zoeS-a\AppData\Roaming\Python\Python37\site-packages\_plotly_utils\utils.py", line 113, in default
    return _json.JSONEncoder.default(self, obj)
  File "C:\Users\zoeS\AppData\Local\Continuum\anaconda3\lib\json\encoder.py", line 179, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type bytes is not JSON serializable

Я пробовал следующее:

objectcolumns=data.loc[:, data.dtypes == object].columns.to_list() 

Тогда

for i in objectcolumns:
    print(i)
    data[i]=data[i].str.decode("utf-8")

однако, когда я делаю это, я получаю ошибку:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa4 in position 5: invalid start byte
...