【问题标题】:sqlite3 with cursor execute intergrity error带有光标的sqlite3执行完整性错误
【发布时间】: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 个值。

标签: database sqlite sqldatatypes


【解决方案1】:

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

试试这样的方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2018-10-06
    • 1970-01-01
    • 2020-11-13
    • 2018-04-10
    • 2013-03-18
    相关资源
    最近更新 更多