Python + SQLite,将变量中的数据插入表格

18

我可以轻松地向SQLite表中插入硬编码的值,但我正在尝试做这样的事情:

name = input("Name: ")
phone = input("Phone number: ")
email = input("Email: ")

cur.execute("create table contacts (name, phone, email)")
cur.execute("insert into contacts (name, phone, email) values"), (name, phone, email)

我知道这是错误的,但我找不到如何使它工作。也许有人可以指点我正确的方向。


1
你的代码有大量明显的语法错误(即使从不正确的语法高亮中也可以看出)。你得到了什么错误?这是你正在运行的实际代码吗?如果不是,请发出你尝试过的实际代码。 - Mark Byers
这不是我正在运行的内容,我只是为了这篇文章快速打出来,让人们了解我想要实现的目标。 - steini
6
请接受马克的答案,或者自己发布其他解决方案并接受它。在标题中使用“[已解决]”在这里不是常规做法。谢谢! - Arjan
3个回答

64

您可以使用 ? 来代表 SQL 查询中的参数:

cur.execute("insert into contacts (name, phone, email) values (?, ?, ?)",
            (name, phone, email))

1
谢谢您,先生。我一直在尝试一些变化,但这个方法可行 :D - steini
我可以使用列表 [姓名,电话,电子邮件] 而不是集合 (姓名,电话,电子邮件) 吗? - Amey P Naik
@AmeyPNaik 我认为它需要一个元组。 - ArduinoBen

1

cur.executemany("insert into contacts (name, phone, email) values (?, ?, ?)", (name, phone, email))

使用executemany()方法将多个参数插入到SQL语句中,该语句可以在一次调用中执行多个参数化查询。


2
通常最好解释一下解决方案,而不仅仅是发布一些匿名代码行。您可以阅读《如何撰写良好的答案》和《解释完全基于代码的答案》。 - Anh Pham

0
cur.execute("create table contacts (name, phone, email)")

cur.execute("insert into contacts (name, phone, email) values(?,?,?)",(name, phone, email)) 

或者

cur.execute("insert into contacts values(?,?,?)",(name, phone, email))

由于您正在向所有可用字段插入值,因此在插入查询中不必提及列名是可以的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接