带有光标的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执行完整性错误的主要内容,如果未能解决你的问题,请参考以下文章

Python sqlite3 如果 executemany() 在中途遇到完整性错误会发生啥?

带有不安全构建标志的 Swift 包依赖项:目标完整性错误

安装游戏错误提示必须输入带有盘符的完整路径

sqlite3_and_sql

sqlite3 operationalerror异常

打开 GL ES 2 - glFramebufferTexture2D 带有不完整的缺少附件错误