从代码插入新行时使用数据库默认值
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
作为列的名称。
如果它们与实际名称不同,请更改它们。
我正在使用 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
作为列的名称。
如果它们与实际名称不同,请更改它们。