Python SQlite3插入params

时间:2015-02-12 22:37:42

标签: python python-2.7 sqlite

问题:

我在使用python将数据插入SQlite时遇到问题。此时我是python的新手,所以这一定是初学者的错误。

错误:

  

OperationalError:无法识别的令牌:" {"

我尝试了什么:

我已经阅读了很多教程并尝试了许多选项,如下面的代码示例所示。但是由于某些原因我无法正常工作。

一些例子:

cursor.execute("INSERT INTO wanted_movie (tmdb_id, name, year) VALUES ({tmdb_id}, {name}, {year})".format(
        tmdb_id=str(data['id']), name=str(data['title']), year=str(data['release_date']).split('-')[0]))

cursor.execute("INSERT INTO wanted_movie (tmdb_id, name, year) VALUES ({tmdb_id}, {name}, {year})", {
        "tmdb_id": str(data['id']), "name": str(data['title']), "year": str(data['release_date']).split('-')[0]})
    conn.commit()

问题:

有人可以帮助我以pythonic方式正确插入SQlite3行吗?

1 个答案:

答案 0 :(得分:3)

不仅仅是一种pythonic方式,还有一种方式

来自docs

  

相反,请使用DB-API的参数替换。将作为占位符放在您想要使用值的位置,然后提供一个值元组作为游标execute()方法的第二个参数。

您可以使用

解决其中一个示例
values = (data['id'],data['title'],data['release_date'])
cursor.execute("INSERT INTO wanted_movie (tmdb_id, name, year) VALUES (?, ?, ?)",values)