如何使用列名指定使用sqlite3写入的内容?

2024-04-26 21:39:17 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我想创建一个函数,将用户添加到我的“用户”表中:

def add_user(name, id):
    cursor.execute("INSERT INTO users VALUES (?, ?, ?)", (name, id))
    conn.commit()

(需要注意的是,“name”列(不是变量)是第一列,“id”列是第三列)

此代码将“name”变量写入第一列(即name列),并将“id”变量写入第二列(即非id列)

有没有一种方法可以使用列的名称来指定要写入的内容?我希望避免使用诸如将第二列的当前值写入自身、或向其添加0之类的解决方案


1条回答
网友
1楼 · 发布于 2024-04-26 21:39:17

首先,您使用3?占位符,只传递2个值:nameid,因此您的代码甚至不会运行。

INSERT语句中,可以指定将接收作为元组提供的值的列:

cursor.execute("INSERT INTO users(name, id) VALUES (?, ?)", (name, id))

或:

cursor.execute("INSERT INTO users(id, name) VALUES (?, ?)", (id, name))

在这两种情况下,结果是相同的。

对于INSERT INTO users(id, name)...,第一个?对应于列id的值,第二个?对应于列name的值,因此必须以相同的顺序在元组内传递它们的值

相关问题 更多 >