Je suis nouveau dans le codage et c'est mon premier projet. Jusqu'à présent, j'ai reconstitué ce que j'ai à travers Googling, Tutorials et Stack. J'essaye d'ajouter des données à partir d'un pandas df de flux RSS grattés à une base de données SQL distante, puis j'héberge le script sur heroku ou AWS et j'ai le script en marche toutes les heures.APScheduler a-t-il besoin d'une fonction à exécuter?
Quelqu'un sur here recommend que j'utilise APScheduler as in this post.
Je rencontre des difficultés car il n'y a pas de tutoriels 'mannequins' autour d'APScheduler. C'est ce que j'ai créé jusqu'ici.
Je suppose que ma question est que mon script doit être dans une fonction pour APScheduler pour le déclencher ou peut-il fonctionner d'une autre manière.
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('interval', minutes=1)
sched.configure()
sched.start()
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/',
'https://www.uktech.news/feed'
]
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>:<host>:3306/<database_name>?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'
merci! J'ai besoin de lire ton script pour comprendre comment tu as fait ça. C'est tellement bien rangé comparé au mien. En ce qui concerne les Pandas, j'ai commencé par lire et progresser, je savais que ce n'était pas correct mais ça fonctionnait et je ne voulais pas le casser avant que j'arrive à atteindre mon premier objectif, l'envoyer dans une base de données. Je vais essayer de changer l'heure à TIMESTAMP, c'est ce que j'essayais d'accomplir. Puis-je utiliser SQLAlchemy sans pymysql? –
Vous devez avoir un module _a_ pour parler à la base de données MySQL, il ne doit pas être 'pymysql'. La documentation SQLAlchemy [répertorie tous les modules pris en charge pour se connecter avec MySQL] (http://docs.sqlalchemy.org/en/latest/dialects/mysql.html) et leurs fonctionnalités/restrictions. – BlackJack
Je reçois toujours une erreur KeyError. J'ai supprimé et recréé la table et cela se produit toujours Traceback (dernier appel en dernier): Fichier "/usr/local/lib/python3.5/dist-packages/apscheduler/executors/base.py", ligne 125, dans run_job retval = job.func (* travail.args, ** travail.kwargs) Fichier "", ligne 20, dans process_feeds rsstracker = métadonnées.tables ['rsstracker'] KeyError: 'rsstracker' –