【发布时间】:2020-12-30 13:05:10
【问题描述】:
我正在尝试使用 python 创建一个数据库来执行 SQL 命令(针对 CS50x 问题集 7)。
我创建了一个表,其中 id 字段设置为 AUTO_INCREMENT,但数据库中的字段仅由 NULL 值填充。我只是希望它的 id 从 1 开始递增。
我已经尝试在线搜索以查看我是否使用了正确的语法并且找不到任何明显的东西,也找不到其他有类似问题的人,因此非常感谢任何帮助。
这是我正在运行的 SQL 命令:
# For creating the table
db.execute("""
CREATE TABLE students (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(255) NOT NULL,
middle_name VARCHAR(255) DEFAULT (NULL),
last_name VARCHAR(255) NOT NULL,
house VARCHAR(10),
birth INTEGER
);
""")
# An example insert statement
db.execute("""
INSERT INTO students (
first_name,
middle_name,
last_name,
house,
birth
)
VALUES (
?, ?, ?, ?, ?
);
""", "Harry", "James", "Potter", "Gryffindor", 1980)
这是phpliteadmin中显示的数据库架构的屏幕截图:
这是生成的数据库的屏幕截图:
【问题讨论】:
-
我认为您需要为
id列添加NOT NULL。 -
@Akina 如果表已经存在,那么应用程序将崩溃并且不会插入任何行。这里的问题是 OP 没有使用 MySql 而是使用 SQLite。
-
@Akina 抱歉,在我清除 .db 文件的程序开头我没有包含一行