我在使用python中的sqlite3库时,向数据库插入数据时出现OperationalError: unrecognized token: ":"这个错误
#3.2保存数据
def saveDataDB(dbpath,datalist):
init_db(dbpath)#创建数据库
conn = sqlite3.connect(dbpath)
cursor = conn.cursor()
for data in datalist:
for i in data:
i = '"' + i +'"'#内容用""包裹
sql = '''
insert into movie250(
info_link,pic_link,cname,ename,score,rated,instroduction,info)
values(%s)'''%",".join(data)
#print(sql) #打印检验sql
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()
进行sql的打印,才发现sql内容根本每用""包裹。
https://movie.douban.com/subject/1292052/,肖申克的救赎, The Shawshank Redemption,9.7,2157152
马上把嵌套的for变量i改为了data的下标。
#3.2保存数据
def saveDataDB(dbpath,datalist):
#init_db(dbpath)#创建数据库
conn = sqlite3.connect(dbpath)
cursor = conn.cursor()
for data in datalist:
for index in range(len(data)):
data[index] = '"' + data[index] +'"'#内容用""包裹
sql = '''
insert into movie250(
info_link,pic_link,cname,ename,score,rated,instroduction,info)
values(%s)'''%",".join(data)
print(sql) #打印检验sql
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()
然后解决了
"https://movie.douban.com/subject/1292052/","肖申克的救赎"," The Shawshank Redemption","9.7","2157152"
总结:
引起这个错误很有可能是忘记把sql里的内容用""包裹(因为insert语句这里输入的是字符串),我这里其实是考虑了的,但却因为data的重新赋值这里出了点问题。