如何在sqlite数据库中插入字符串值?

时间:2015-02-10 12:01:48

标签: python sql python-2.7 sqlite subprocess

以下代码显示错误

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,但它仍无法正常工作,,,,,,

2 个答案:

答案 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*