在往数据库写入数据的时候,会出现上面的没有表或者列
SQLite中出现错误:Error: near "%": syntax error
又或者
sqlite3.OperationalError: no such column: **
诸如此类
源码如下,主要是从excel读取数据写入数据库表
import xlrd
import sqlite3
#打开数据所在的工作簿,以及选择存有数据的工作表
book = xlrd.open_workbook("test-db.xlsx")
sheet = book.sheet_by_name("Sheet1")
for r in range(1, sheet.nrows):
module = sheet.cell(r,1).value
content = sheet.cell(r,2).value
comment = sheet.cell(r,3).value
beizhu = sheet.cell(r,4).value
time = sheet.cell(r,6).value
#建立一个SQL连接
conn = sqlite3.connect('sbwzx.db')
# 获得游标
cur = conn.cursor()
# 创建插入SQL语句
query = 'insert into QXLC_TB(mokuai,content,comment,beizhu,time) values (%s,%s,%s,%s,%s);'
# 创建一个for循环迭代读取xls文件每行数据的, 从第二行开始是要跳过标题行
for r in range(1, sheet.nrows):
mk = sheet.cell(r,0).value
content1 = sheet.cell(r,2).value
comment1 = sheet.cell(r,3).value
beizhu1 = sheet.cell(r,4).value
time1 = sheet.cell(r,6).value
data = (mk,content1,comment1,beizhu1,time1)
# 执行sql语句
cur.execute('insert into QXLC_TB(mokuai,content,comment,beizhu,time) values {};'.format(data))
cur.close()
conn.commit()
conn.close()
主要报错点是:SQL语句执行
原来的写法是
query = 'insert into QXLC_TB(mokuai,content,comment,beizhu,time) values (%s,%s,%s,%s,%s);'
cur.execute(query,data)
换成下面的就ok了
cur.execute('insert into QXLC_TB(mokuai,content,comment,beizhu,time) values {};'.format(data))