0
votes

Essayer de collecter des données API et d'envoyer au MySQL local

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é" xxx

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 ....


0 commentaires

3 Réponses :


0
votes

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: xxx

mis à jour pour refléter les modifications suggérées dans les commentaires < / p>


12 commentaires

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 () qui est pourquoi rien ne se passe. Au bas de votre fichier, ajoutez ceci: On_data (données) sans aucun retrait. En outre, supprimez le paramètre auto dans le On_data () 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?



0
votes
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)

0 commentaires

0
votes
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!

1 commentaires

La seule chose est que je reçois seulement le premier résultat de l'API, et pas tous :(