如何在 sql 精简版数据库中插入字符串值?

How to insert the string value in sql lite database?

以下代码显示错误

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 但还是不行,

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 table 将存在,并且您的程序的后续 运行s 将失败(除非您删除table 别处)。或者,您可以将 IF NOT EXISTS 子句添加到 CREATE TABLE 查询:

cur.execute("CREATE TABLE IF NOT EXISTS info(Id INT, Url_Name varchar(55))")

感谢 mhawke 的回答,但是 每当我使用参数化查询时:

cur.execute("INSERT INTO info VALUES(1, ?)", (url,)) 我得到的输出为 (1,u'http://www.google.com') 不知你从何而来

我用过

cur = con.cursor()    
cur.execute("SELECT * FROM info")
rows = cur.fetchall()
for row in rows:
    print row*