sqlite数据库却添加图片时出错?

import sqlite3
import tkinter as tk
from tkinter  import ttk
from tkinter import messagebox
from tkinter import filedialog
db=sqlite3.connect("d:/chang.db")
sql = "create table if not exists  student (data  date, score  integer ,jl  text,picture  blob)"
cur = db.cursor()
cur.execute(sql)
cur.close()
db.close()

win=tk.Tk()
win.geometry('800x600')
tk.Label(win, text="日期").grid(row=0, column=0)
date=tk.StringVar()
tk.Entry(win,textvariable=date).grid(row=0,column=1)
tk.Label(win, text="分数").grid(row=1, column=0)
score = tk.StringVar()
tk.Entry(win, textvariable=score).grid(row=1, column=1)
tk.Label(win, text="奖励与否").grid(row=2, column=0)
gave=tk.StringVar()
tk.Entry(win, textvariable=gave).grid(row=2, column=1)
def callback():
              fileName = tk.filedialog.askopenfilename(filetypes=[("PNG", ".png"), ("JPG", ".jpg"), ("GIF", ".gif")])
              return(fileName)
def check():
    db = sqlite3.connect("d:/chang.db")
    cur = db.cursor()
    w=cur.execute('select sum(score) from student where (data>="%s" and data<="%s")'%(var1.get(),var2.get()))
    db.commit()
    q=w.fetchone()[0]
    print(q)


def insert():
    if score.get()!='' and  date.get()!='' and gave.get()!='':
       w=()
       db = sqlite3.connect("d:/chang.db")
       cur=db.cursor()
         #获取完整选择照片路径
       if bianbie()!=0:
        #sql2 = 'insert into student values("%s","%s","%s")' % (
          # date.get(), score.get(), gave.get())'''
           flagp=messagebox.askyesno("照片信息","需要添加照片信息")
           if flagp==True:
             picaddress=callback()
             print(picaddress)
             f=open(picaddress,'rb')
             img=f.read()
             f.close()
             sql2='insert into student values(?,?,?,?)'
             w=(date.get(), score.get(),gave.get(),None)
             cur.execute(sql2,w)
             ddd=date.get()
             sql3="update student set picture=? where data=ddd"
             cur.execute(sql3,(img,))
             db.commit() 
           else:
             sql2='insert into student values(?,?,?)'
             w=(date.get(), score.get(),gave.get())
 
           messagebox.showinfo("录入数据成功", "时间"+date.get())
           cur.close()
           db.close()
       else:
         messagebox.showerror("重复录入","你输入日期与系统重复")
    else:
        messagebox.showerror("无效输入", "请输入完整信息")


insertButton = tk.Button(win, text='录入', width=3,
                         height=1, command=insert).grid(row=3, column=1, pady=1)
#tk.Button(win, text="添加照片", command=callback).grid(row=3,column=3)
def bianbie():
    db = sqlite3.connect("d:/chang.db")
    cur = db.cursor()
    sql1 = 'select data from student'
    s=cur.execute(sql1)
    r = [a for a in s.fetchall()]
    for k in r:
        if k[0]==date.get():
           return(0)

win.mainloop()
# chuck.py
# w.py
 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^