3

URLファイルの読み取りに基づいて、6つの変数を使用してPython 2.7でsqlite dbとテーブルを構築しました。

JSON を使用して辞書を作成しました。コードはすべてを適切に読み取り、キーと値をループ処理します。

これをテーブルに挿入する必要があります。それは私が少し迷っているところです。コードを提供します。私の穴は明らかだと思います。

import json
import urllib2
#Read file and print a line
webFD=urllib2.urlopen("http://rasinsrv07.cstcis.cti.depaul.edu/CSC455/assignment4.txt")
tweet = webFD.readline()
tweet


#create dictionary
dictt=json.loads(tweet)

#print dictionary
dictt.keys()

#print values
dictt.values()

#loop through tweets
for (key, value) in dictt.items():
    print key, '->', value

#Created the DB
import sqlite3
conn = sqlite3.connect('twitter.db')
c = conn.cursor()

#Created the table for the tweets
c.execute("CREATE TABLE Tweet(created_at, id, text, source,    in_reply_to_user_ID,retweet_Count)")

これが私の切断です。それらのつぶやきを読み込みたい (dict の 6 つのキーと値を Tweet テーブルに:

for elt in tweet:
    currentRow = elt[:-1].split(", ")
    insert = """insert into Tweet values ('%s', '%s', '%s', '%s', '%s', '%s')""" %("created_at", "id", "text", 'source', 'in_reply_to_user_ID', 'retweet_Count')
    print insert
4

2 に答える 2

1

2 つのエラーに気付きました。

  • ツイートのみを取得しています
  • dict の一部のキーのスペルが間違っています (Python は大文字と小文字を区別しません)。

これを試して。これは最善の解決策ではありません (データベースを開いたり閉じたりし続けます) が、投稿したものと非常によく似ています。

import json
import urllib2
#Read file and print a line
webFD = urllib2.urlopen("http://rasinsrv07.cstcis.cti.depaul.edu/CSC455/assignment4.txt")
tweets = webFD.readlines()

for tweet in tweets:
    print tweet


    #create dictionary
    try:
        dictt = json.loads(tweet)
    except ValueError:
        continue

    #print dictionary
    print dictt.keys()

    #print values
    print dictt.values()



    #loop through tweets
    for (key, value) in dictt.items():
        print key, '->', value


    #Created the DB
    import sqlite3

    conn = sqlite3.connect('twitter.db')
    c = conn.cursor()

    #Created the table for the tweets
    c.execute("CREATE TABLE IF NOT EXISTS Tweet(created_at, id, text, source,    in_reply_to_user_ID,retweet_Count)")

    #*** Here is a possible solution ***
    c.execute('INSERT INTO Tweet VALUES (?, ?, ?, ?, ?, ?)',
          (dictt['created_at'], dictt["id"], dictt["text"], dictt['source'], dictt['in_reply_to_user_id'],
           dictt['retweet_count']))
    conn.commit()
    conn.close()
于 2013-11-06T21:28:32.020 に答える