python写入mysql数据比实际应该写入的数据少是咋回事

cursor = db.cursor()
cursor.execute("DROP TABLE IF EXISTS bilibili")
sql = """CREATE TABLE bilibili (
id int,
contents varchar(100))
"""
cursor.execute(sql)
oid = 69585286
url = "https://comment.bilibili.com/" + str(oid) + ".xml"

res = requests.get(url)
res.encoding = "UTF-8"
xml = res.text
result = re.findall(r'(.*?)',xml)
print("共爬取弹幕数为:"+str(result.__len__()))

file_path = r'C:\Users\95666\Desktop\Demo\弹幕1.txt'
with open(file_path,mode='w+',encoding='utf8') as f:
i = 1
for content in result:
content += '\n'
sql = "INSERT INTO bilibili VALUES ('%d','%s')" %(i,content)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
i += 1

    f.write(content)
    f.write(str(i))

cursor.close()
db.close()
end_time = time.time()
print("保存成功,耗时%fs"%(end_time-start_time))

实际爬取数目为1500用txt保存的也是1500条 可写入mysql只有1000条
丢失的刚好是最后500条请问这是为什么啊

单纯看代码,可能因为弹幕有非法字符或者字符串过长,导致cursor.execute(sql)出错,从而缺失部分数据,你可以将try去掉看是否会有报错,从报错中找问题