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

从网页爬取数据,将爬取数据插入数据库的时候报错,报错截图如下:
在这里插入图片描述


问题描述

在这里插入图片描述

报错提示插入数据的时候出错,仔细检查插入数据之后,发现有两个值是字典类型
在这里插入图片描述

原因分析:

个人觉的原因是数据库中该字段的值是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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值