2017-09-05 4 views
0

私はコーディングが初めてで、これが私の最初のプロジェクトです。これまでのところ、私はグーグル、チュートリアル、スタックを通して私が持っているものをつなぎました。データフレームがMySQLデータベースに追加されない

これまでのところ、RSSからSQLデータベースに取り込んでいるデータを取得することができました。しかし、スクリプトを実行すると、新しいデータは追加されません。最新のフィードエントリで更新され、以前にあったものは消去されます。

私は関数に追加を追加したので、私が間違って書いたものはわかりません。これは本当に不吉な質問ですが、私が間違っていることは分かりません。

import pandas as pd 
from pandas.io import sql 
import feedparser 
import time 

rawrss = ['http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml', 
      'https://www.yahoo.com/news/rss/', 
      'http://www.huffingtonpost.co.uk/feeds/index.xml', 
      'http://feeds.feedburner.com/TechCrunch/', 
     ] 

time = time.strftime('%a %H:%M:%S') 
summary = 'text' 

posts = [] 
for url in rawrss: 
    feed = feedparser.parse(url) 
    for post in feed.entries: 
     posts.append((time, post.title, post.link, summary)) 

df = pd.DataFrame(posts, columns=['article_time','article_title','article_url', 'article_summary']) # pass data to init 
df.set_index(['article_time'], inplace=True) 

import pymysql 
from sqlalchemy import create_engine 

engine = create_engine('mysql+pymysql://<username>:<password>@<hostname>:<port>/<dbname>?charset=utf8', encoding = 'utf-8') 
engine.execute("DROP TABLE IF EXISTS rsstracker") 
engine.execute("""CREATE TABLE rsstracker(article_time varchar(255), 
       article_title varchar(255), 
       article_url varchar(1000), 
       article_summary varchar(1000))""") 

df.to_sql(con=engine, name='rsstracker', if_exists='append', flavor='mysql') 
+1

この 'engine.execute(「DROP TABLE IFはrsstrackerをEXISTS」)私は、新しいデータが – RiggsFolly

+0

をappend_ていないスクリプトを実行すると_Howeverが、これはテーブルを削除し、再度、毎回私を開始しない理由'説明できますスクリプトを実行しますか? –

答えて

0

これは、私は、テーブルを毎回作成しようとしていたことに気づいたために私を導いた、私はテーブルを落としたことを私に指摘されました。

私はテーブルを作成するための初期コードを編集し、それを挿入物に置き換えました。

import pandas as pd 
from pandas.io import sql 
import feedparser 
import time 

rawrss = ['http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml', 
      'https://www.yahoo.com/news/rss/', 
      'http://www.huffingtonpost.co.uk/feeds/index.xml', 
      'http://feeds.feedburner.com/TechCrunch/', 
     ] 

time = time.strftime('%a %H:%M:%S') 
summary = 'text' 

posts = [] 
for url in rawrss: 
    feed = feedparser.parse(url) 
    for post in feed.entries: 
     posts.append((time, post.title, post.link, summary)) 

df = pd.DataFrame(posts, columns=['article_time','article_title','article_url', 'article_summary']) # pass data to init 
df.set_index(['article_time'], inplace=True) 

import pymysql 
from sqlalchemy import create_engine 

engine = create_engine('mysql+pymysql://<username>:<password>@<hostname>:<port>/<dbname>?charset=utf8', encoding = 'utf-8') 
engine.execute("INSERT INTO rsstracker VALUES('%s', '%s', '%s','%s')" % (time, post.title, post.link, summary)) 


df.to_sql(con=engine, name='rsstracker', if_exists='append', flavor='mysql') 
関連する問題