Python Mysql储存数据为什么报错呢


info_data.encoding = info_data.apparent_encoding
info_data = json.loads(info_data.text)

print(type(info_data))
#  <class 'dict'>

print(info_data)
#  {'alertData': {'areaDesc': '81000000', 'description': '气象台2022年08月09日10时24分发布高温橙色预警信号:等镇(街道)未来24小时内最高气温将升至35℃以上。请注意防范高温引发城镇、森林火灾,避免或减少高温作业。', 'eventType': '11B09', 'headline': '气象台发布高温橙色预警信号[II级/严重]', 'identifier': '1600000_20220809102402', 'sendTime': '2022-08-09 10:24:02', 'sender': '气象台', 'severity': 'orange'}}

log_time = str(datetime.datetime.now())
log_info = """insert into bot_log (time,type,module,info) VALUES (""" + log_time + ""","运行日志","气象预警",""" + str(info_data) + """)"""
send_log(log_info)

print(log_info)
#  insert into bot_log (time,type,module,info) VALUES (2022-08-09 12:00:37.268871,"运行日志","气象预警",{'alertData': {'areaDesc': '81000000', 'description': '气象台2022年08月09日10时24分发布高温橙色预警信号:等镇(街道)未来24小时内最高气温将升至35℃以上。请注意防范高温引发城镇、森林火灾,避免或减少高温作业。', 'eventType': '11B09', 'headline': '气象台发布高温橙色预警信号[II级/严重]', 'identifier': '1600000_20220809102402', 'sendTime': '2022-08-09 10:24:02', 'sender': '气象台', 'severity': 'orange'}})

错误信息:
(1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'11:52:47.477765,"运行日志","气象预警",{\'alertData\': {\'areaDesc\': \'5106\' at line 1')
insert into bot_log (time,type,module,info) VALUES (2022-08-09 11:52:47.477765,"运行日志","气象预警",{'alertData': {'areaDesc': '81000000', 'description': '气象台202208091024分发布高温橙色预警信号:等镇(街道)未来24小时内最高气温将升至35℃以上。请注意防范高温引发城镇、森林火灾,避免或减少高温作业。', 'eventType': '11B09', 'headline': '气象台发布高温橙色预警信号[II级/严重]', 'identifier': '1600000_20220809102402', 'sendTime': '2022-08-09 10:24:02', 'sender': '气象台', 'severity': 'orange'}})

时间是要加引号的吧
2022-08-09 11:52:47.477765 光溜溜的,算啥类型啊

在log_info=上一行加一行代码
info_data=json.dumps(info_data)
直接用str是不行的,用JSON dumps生成的字符串是可以插入的sql的

是不是字符编码格式,msyql一般都是按utf-8存储的,插入的中文字符串是不是utf-8

mysql 配置序列化问题。