从代码插入新行时使用数据库默认值

Use database defaults while inserting new row from code

我正在使用 SQLite 数据库创建一个 login/register 程序,我想知道如何在仅传递 7 列中的 4 列并将前三列(id、状态和类型)留空的情况下向数据库插入一行所以他们充满了数据库默认值。我怎么能做那样的事情?我尝试只传递 4 个参数,但无论我尝试哪种方式,它都不起作用。

username = input("username: ")
name = input("name: ")
password = input("password: ")
email = input("email: ")

salt = 'xxxxx'
hexdex = hashlib.sha512((password + salt).encode()).hexdigest()


con = sqlite3.connect('database/database.db')
cur = con.cursor()

cur.execute("INSERT INTO users VALUES (DEFAULT, DEFAULT, DEFAULT,  (?), (?), (?), (?))", (username, name, hexdex, email))

con.commit()
con.close()

您必须列出将获取您提供的值的所有列并跳过将获取其默认值的列:

sql = "INSERT INTO users(username, name, hexdex, email) VALUES (?, ?, ?, ?)"
cur.execute(sql, (username, name, hexdex, email))

我使用 username, name, hexdex, email 作为列的名称。
如果它们与实际名称不同,请更改它们。