0

我在使用 sql 语句时遇到问题,当我尝试插入数据时它似乎可以工作,但是当我检查表时,那里什么也没有。我尝试使用以下语句插入数据:

cursor.execute("INSERT INTO song (title,artist) VALUES (\'{0}\',\'{1}\')".format(tit,art))

但是,当我通过下一种方式通过终端执行此操作时,它可以工作:

cursor.execute("INSERT INTO song (title,artist) VALUES ('Hide','Yellowcard')")

我也尝试用 %s 替换字符串,但都不起作用。

4

1 回答 1

3

您需要使用 SQL 参数;该sqlite3库使用?占位符:

cursor.execute("INSERT INTO song (title, artist) VALUES (?, ?)", (tit, art))

这样做还有一个额外的好处,即 sqlite3 将为您找出如何引用每个值,防止 SQL 注入攻击,并让数据库有机会缓存​​查询的查询计划并插入未来的值。

确保提交您的交易。

于 2013-09-20T22:36:03.053 回答