【问题标题】:How to insert the string value in sql lite database?如何在sqlite数据库中插入字符串值?
【发布时间】:2015-02-10 12:01:47
【问题描述】:

以下代码显示错误

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

【问题讨论】:

    标签: python sql python-2.7 sqlite subprocess


    【解决方案1】:

    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,u'google.com'),我不知道你从哪里来
    • “u”表示字符串是unicode 字符串。 sqllite 以 unicode 形式返回 TEXT 字段,这就是您看到“u”的原因。
    【解决方案2】:

    感谢 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*
    

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      相关资源
      最近更新 更多