在SQLite3数据库中存储带引号的推文

时间:2013-11-25 15:52:35

标签: python twitter sqlite

我正在使用json从网上加载推文。

import urllib2, json, sqlite3
wFD = urllib2.urlopen('http://rasinsrv07.cstcis.cti.depaul.edu/CSC455/Twitter_2013_11_12.txt')
blankLines = 0
goodLines = 0
numLines = 10000
while numLines > 0:
    line = wFD.readline()
    numLines = numLines - 1
    try:    
         tweets.append(json.loads(line))
         goodLines = goodLines+1
    except:
        blankLines = blankLines + 1
blankLines
goodLines

我必须检查整个推文的长度,然后使用SQLite3将其存储在数据库中的一个表中。

SingleTable = """Create table SingleTable
            (tweet varchar(8038)
            );"""
c.execute("drop table if exists SingleTable")            
c.execute(SingleTable)

len_strTwt = 0
for tweet in tweets:
    str_tweet = str(tweet)
    c.execute("insert into SingleTable values (?)", (str_tweet))
    if len_strTwt < len(str_tweet):
        len_strTwt = len(str_tweet)
len_strTwt

当我尝试存储它时,由于有如此多的双引号和单引号,我无法做到这一点。我不知道如何在这里使用excape符号将其存储在数据库中。任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

你需要一个额外的逗号告诉Python你想要一个元组:

c.execute("insert into SingleTable values (?)", (str_tweet,))

如果没有逗号,您将得到一个普通字符串,它将被execute解释为一系列字符,即每个字符将是一个参数值。

请注意,默认情况下,SQLite不会检查列的长度。