以下代码显示错误
import sqlite3 as lite
import sys
con = lite.connect('test.db')
url=http://www.google.com
with con:
cur = con.cursor()
cur.execute("CREATE TABLE info(Id INT, Url_Name varchar(55))")
cur.execute("INSERT INTO info VALUES(1,url)")
我尝试使用%s,但它仍无法正常工作,,,,,,
答案 0 :(得分:2)
url=http://www.google.com
语法无效,但可能你已经意识到并将其改为字符串,即
url ='http://www.google.com'
即使在此之后,您也尝试将非字符串值url
插入Url_Name
列。查询:
"INSERT INTO info VALUES(1,url)"
您可以使用参数化查询来完成这项工作:
cur.execute("INSERT INTO info VALUES(1, ?)", (url,))
此外,在第一次运行程序后,info
表将存在,并且程序的后续运行将失败(除非您将表放在其他位置)。或者,您可以将IF NOT EXISTS
子句添加到CREATE TABLE
查询:
cur.execute("CREATE TABLE IF NOT EXISTS info(Id INT, Url_Name varchar(55))")
答案 1 :(得分:0)
感谢mhawke的回答,但是 每当我使用参数化查询时:
cur.execute(" INSERT INTO info VALUES(1,?)",(url,)) 我得到输出为(1,你' http://www.google.com') 我不知道你来自哪里
我用过
cur = con.cursor()
cur.execute("SELECT * FROM info")
rows = cur.fetchall()
for row in rows:
print row*