sqlite3.OperationalError: no such table: QXLC

在往数据库写入数据的时候,会出现上面的没有表或者列

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))

你可能感兴趣的:(python)