UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position

从网页爬取数据,将爬取数据插入数据库的时候报错,报错截图如下:
UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position_第1张图片


问题描述

UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position_第2张图片

报错提示插入数据的时候出错,仔细检查插入数据之后,发现有两个值是字典类型
UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position_第3张图片

原因分析:

个人觉的原因是数据库中该字段的值是varchar类型,所以字典类型的数据不能存进去


解决方案:

将这两个字典项删掉

程序代码

del temp_dict['backFlowInfoInfoDTO']
del temp_dict['dataApplyPrompt']

主程序

import datetime
import json

import MySQLdb
import pandas as pd
import requests
import urllib3

starttime = datetime.datetime.now()

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

url = 'xxxxxxx'
cookies = 'xxxxxxxx'

jsonParam = {xxxxx}
headers = {xxxxxx}
response = requests.post(url, data=json.dumps(jsonParam), headers=headers)

res = response.json()

list = res['data']['list']
n = len(list)

# 创建数据库连接
conn = MySQLdb.connect(host='xxxxxx', user='xxxx', passwd='xxxx', db='xxxx', port=xxxx,
                       charset='utf8')
# 创建数据库游标对象cursor
cur = conn.cursor()
# cur.execute("truncate table your_table_name;")

# 将数据信息插入数据库
for i in range(n):

    temp_dict = list[i]
    del temp_dict['backFlowInfoInfoDTO']
    del temp_dict['dataApplyPrompt']
    table = "your_table_name"
    keys = ','.join(temp_dict.keys())  # 列字段
    values = ','.join(['%s'] * len(temp_dict))  # 行字段
    sql = 'insert into {table} ({keys}) values ({values})'.format(table=table, keys=keys, values=values)
    # print(sql)
    cur.execute(sql, tuple(temp_dict.values()))
    conn.commit()
    print("第" + str(i + 1) + "次插入成功")

cur.close()
conn.close()

endtime = datetime.datetime.now()
print("程序运行时间:")
print(endtime - starttime)

你可能感兴趣的:(问题解决,其他)