带有光标的sqlite3执行完整性错误
Posted
技术标签:
【中文标题】带有光标的sqlite3执行完整性错误【英文标题】:sqlite3 with cursor execute intergrity error 【发布时间】:2018-07-12 00:03:58 【问题描述】:为什么我的 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
截图如下:
【问题讨论】:
看起来studentid
期待一个整数并接收一个字符串:'a'。
您应该在问题中包含相关代码和错误消息作为文本。人们更愿意在他们需要问题时提供帮助,这使得问题可搜索。
另外,您的表格有 5 列,但您提供了 6 个值。
【参考方案1】:
“数据类型不匹配”表示您尝试将值分配给类型与值的类型不匹配的列。在这种情况下,studentid
是使用类型 INTEGER
定义的,但您尝试插入值 "a"
,它是一个字符串,或 VARCHAR
。
试试这样的方法:
cursor.execute('''
INSERT INTO students(studentid,forename,surname,currentgrade,targetgrade)
VALUES (1,"b","1","c","d");
''')
【讨论】:
以上是关于带有光标的sqlite3执行完整性错误的主要内容,如果未能解决你的问题,请参考以下文章