带游标的sqlite3执行完整性错误

时间:2018-02-01 15:39:59

标签: database sqlite sqldatatypes

为什么我的sql3没有工作?

cursor.execute('''

CREATE TABLE IF NOT EXISTS students(

studentid INTEGER PRIMARY KEY,
forename VARCHAR(20) NOT NULL,
surname VARCHAR(20) NOT NULL,
currentgrade VARCHAR(20) NOT NULL,
targetgrade VARCHAR(30) NOT NULL)
''')

cursor.execute('''
INSERT INTO students(studentid,forename,surname,currentgrade,targetgrade)
VALUES ("a","b","1","c","d");
''')

db.commit()

这是它抛出的错误:

sqlite3.IntegrityError: datatype mismatch

这是一个截图:

this answer

1 个答案:

答案 0 :(得分:1)

“datatype mismatch”表示您尝试将值分配给类型与值类型不匹配的列。在这种情况下,studentid的定义类型为INTEGER,但您尝试插入值"a",这是一个字符串,或VARCHAR

尝试这样的事情:

cursor.execute('''
INSERT INTO students(studentid,forename,surname,currentgrade,targetgrade)
VALUES (1,"b","1","c","d");
''')