我的python程序运行不正常,它是提交按钮的东西,它给我一个错误说:
TypeError: 'str' object is not callable
请帮忙。以下是代码中不起作用的部分:
def submit():
g_name = ent0.get()
g_surname = ent1.get()
g_dob = ent2.get()
g_tutorg = ent3.get() #Gets all the entry boxes
g_email = ent4.get()
cursor = db.cursor()
sql = '''INSERT into Students, (g_name, g_surname, g_dob, g_tutorg, g_email) VALUES (?,?,?,?,?)'''
cursor.execute(sql (g_name, g_surname, g_dob, g_tutorg, g_email))
#Puts it all on to SQL
db.commit()
mlabe2=Label(mGui,text="Form submitted, press exit to exit").place(x=90,y=0)
我不确定你还需要什么,所以这里是创建表的SQL部分的其余部分
cursor = db.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS Students(
StudentID integer,
Name text,
Surname text,
DOB blob,
Tutor_Grop blob,
Email blob,
Primary Key(StudentID));
""") #Will create if it doesn't exist
db.commit()
我一直在尝试这么久,无法找到解决这个问题的方法,所以如果你能提供帮助那就太棒了,谢谢
答案 0 :(得分:1)
问题可能在您的行中:
cursor.execute(sql (g_name, g_surname, g_dob, g_tutorg, g_email))
尝试改变它:
cursor.execute(sql, (g_name, g_surname, g_dob, g_tutorg, g_email))
编辑:
我使用以下代码在我的简单应用中调用SQLite插入:
data = (None, spath, sfile, sfilename, sha256hash, )
cur.execute("INSERT INTO filesoid VALUES (?, ?, ?, ?, ?)", data)
它运作正常。
答案 1 :(得分:1)
您没有正确传递变量的值。你称之为cursor.execute(sql())
的方式使翻译认为它是一种功能。
您需要正确格式化sql
字符串:
sql = '''INSERT into Students, ({}, {}, {}, {}, {}) VALUES (?,?,?,?,?)'''.format(g_name, g_surname, g_dob, g_tutorg, g_email)
然后使用:
cursor.execute(sql)
编辑: 或者您可能需要传递一个包含数据的元组:
sql = '''INSERT into Students VALUES (?,?,?,?,?)'''
'data = (g_name, g_surname, g_dob, g_tutorg, g_email)
然后使用
cursor.execute(sql, data)'
这取决于这些值实际是什么,而且没有看到数据库,我无法说明。