Je ne peux pas obtenir ce script que j'ai créé pour travailler. Il doit collecter des données API (renvoie un JSON) Et je souhaite enregistrer des données spécifiques sur MySQL
joué avec le code et je ne l'ai pas fait fonctionner ...
Diverses erreurs "attendues d'un bloc indenté" p> Je m'attends à ce que la sortie soit stockée dans une table MySQL ... mais j'arrête tout en essayant d'exécuter le script.
De plus, j'ai besoin de le faire courir sans cesse mal tuer le processus / la session .... p> p>
3 Réponses :
Vos trindages sont tous foirés, Python s'appuie sur les retraites. N'a pas regardé le code lui-même afin qu'il puisse être buggé, mais corrigé les tirettes: mis à jour pour refléter les modifications suggérées dans les commentaires forts> P> < / p>
L'arrangement a aidé, mais apprécierait que quelqu'un puisse céder le code ... quelque chose n'est pas juste
Serait utile si vous pouviez fournir des erreurs que vous obtenez
C'est la chose sa course mais je n'ai aucune erreur - mais les données ne vont pas dans la DB
Est-ce votre propre script? Si tel est le cas, vous n'appelez jamais la fonction on__data () code> qui est pourquoi rien ne se passe. Au bas de votre fichier, ajoutez ceci: On_data (données) code> sans aucun retrait. En outre, supprimez le paramètre auto code> dans le On_data () code> Définition, cela ne devrait pas être là.
J'ai édité ma réponse un peu pour refléter les modifications que j'ai suggérées et déplacer votre collecte de données et votre appel de la fonction dans un contrôle principal
Merci pour les commentaires - Cependant, j'appelle les fonctions On_Data (données) - c'est la dernière ligne ....
Sauf si j'ai besoin de nouvelles lunettes, je ne vous vois que appeler store_data de On_data
J'ai utilisé votre script après avoir organisé les espaces. en bas la dernière ligne il y a sur_data (données)
Ouais j'ai ajouté cette heure il y a une heure ... ce n'était pas dans la version postée hier.
Toujours - je n'ai aucune indication et les données ne sont pas dans ... :(
ok donc j'ai changé le script - et maintenant, je reçois une indication que je coupe correctement le JSON à cause de la fonction d'impression ... une idée de sa raison pour laquelle il ne pas insérer à la DB?
Vous avez ajouté 2 vous réponde maintenant, avec différentes versions de votre code. Pourriez-vous modifier votre question initiale pour refléter tout votre code comme vous l'avez maintenant et expliquez ce qui est et ce qui ne fonctionne pas?
import requests
import MySQLdb
from dateutil import parser
HOST = "localhost"
USER = "root"
PASSWD = "xxxxx"
DATABASE = "xxxxx"
# api-endpoint
URL = "https://newsapi.org/v2/sources?apiKey=xxxxxxxxxxxxxxxxxxx"
# API given here
country = "us"
# defining a params dict for the parameters to be sent to the API
PARAMS = {'country':country}
# sending get request and saving the response as response object
r = requests.get(url = URL, params= PARAMS)
# extracting data in json format
data = r.json()
# extracting latitude, longitude and formatted address
# of the first matching location
articles = data['sources'][0]['id']
# printing the output
print("article name:%s"
%(articles))
def store_data(articles):
db=MySQLdb.connect(host=HOST, user=USER, passwd=PASSWD, db=DATABASE, charset="utf8")
cursor = db.cursor()
insert_query = MySQLdb.escape_string("INSERT INTO xxxxx (articles) VALUES (%s)")
cursor.execute(insert_query, (articles))
db.commit()
cursor.close()
db.close()
return
#insert the data into the MySQL database
store_data(articles)
from __future__ import print_function
import requests
import MySQLdb
from dateutil import parser
HOST = "localhost"
USER = "root"
PASSWD = "ssss!"
DATABASE = "sss"
def store_data(articles):
db=MySQLdb.connect(host=HOST, user=USER, passwd=PASSWD, db=DATABASE, charset="utf8")
cursor = db.cursor()
insert_query = MySQLdb.escape_string("INSERT INTO usa_news (articles) VALUES (%s)")
cursor.execute(insert_query, (articles,))
db.commit()
cursor.close()
db.close()
return
# api-endpoint
URL = "https://newsapi.org/v2/sources?apiKey=ssssssssss"
# API given here
country = "us"
# defining a params dict for the parameters to be sent to the API
PARAMS = {'country':country}
# sending get request and saving the response as response object
r = requests.get(url = URL, params= PARAMS)
# extracting data in json format
data = r.json()
# extracting latitude, longitude and formatted address
# of the first matching location
articles = data['sources'][0]['id']
# printing the output
print("article name:%s"
%(articles))
#insert the data into the MySQL database
store_data(articles)
Finally made it work!
La seule chose est que je reçois seulement le premier résultat de l'API, et pas tous :(