我遇到了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来替换字符串。
答案 0 :(得分:3)
您需要使用SQL参数; sqlite3
库使用?
占位符:
cursor.execute("INSERT INTO song (title, artist) VALUES (?, ?)", (tit, art))
这有一个额外的好处,sqlite3将为您找出如何引用每个值,防止SQL注入攻击,并使数据库有机会缓存查询的查询计划,并在未来的值中插入。
确保提交您的交易。