我正在努力学习某个特定的剧本,我试过谷歌搜索问题,但我已经陷入困境......
我想知道是否有人可以帮我解决SQL公式问题。我已经将此发布到Reddits r / python,并在那里发布任何答案,以供将来可能需要它的人使用!
当前脚本位于:https://gist.github.com/adamrees89/b73a60bc01170601ced7adc7a8e971f7
此时,脚本会读取一个示例excel文件,读取每个工作表上所有单元格的值和格式,并将值和格式记录到SQLlite3文件中。
目前,脚本读取所有值和格式正常,在SQL中为每个工作表创建一个没有问题的表(使用DB Browser for SQLite确认),但表中没有数据行。
我认为我的' templateCell()'功能:
def templateCell(s,sn,c,r):
#__init__ will gather the cell format data
cellRef = c + r
val = s[cellRef].value
fname = s[cellRef].font.name
fsize = s[cellRef].font.size
fbold = int(s[cellRef].font.bold == 'true')
fital = int(s[cellRef].font.italic == 'true')
ccolour = s[cellRef].fill.start_color.index
print("Cell Reference is: {},".format(cellRef))
c.execute("INSERT INTO {tn} VALUES ({a},{b},{c},{d},{e},{f})".format(tn=sn,a=cellRef,b=val,c=fname,d=fbold,e=fital,f=ccolour))
或者更具体地说是第11行的c.execute函数,它应该在数据库中为每个单元格创建一行。变量是:
s = sheet
sn = sheetname (function of sheet)
c = column
r = row
有什么想法吗?
编辑1:Excel文件可在此处获取:testExcel.xlsx
答案 0 :(得分:1)
问题:...但表格中没有数据行。
完成一个工作表后,您可能错过了c.commit()
。
注意:查看
executemany(sql, seq_of_parameters)
功能.¶`
commit()
此方法提交当前事务。如果不调用此方法,则自上次调用commit()以来所执行的任何操作都不会从其他数据库连接中看到 如果您想知道为什么没有看到您写入数据库的数据,请检查您是否忘记调用此方法。