2016-03-10 17 views
0

Я пишу программу, которая сбрасывает твиты нескольких людей, если тело твита уникально, оно будет храниться в базе данных sqlite для этого человека. У меня есть два файла: один для записи в базы данных и один для чтения базы данных и поиска твитов с поисковым словом. Перед записью в базы данных я печатал твиты на терминале, твиты вытягиваются из твиттера правильно. Когда я пытаюсь выполнить поиск, все базы данных имеют нулевые твиты, даже если нет термина. Существует либо проблема с записью или чтением базы данных. Пожалуйста, помогите, я ценю, что я очень новичок в python.писать и читать peewee

файл письма:

import requests 
import datetime 
from bs4 import BeautifulSoup 
from peewee import * 
from time import sleep 

databases = ["femfreq.db", "boris_johnson.db", "barack_obama.db", 
     "daily_mail.db", "guardian.db", "times.db", "zac_goldsmith.db", 
     "bernie_sanders.db", "george_osborne.db", "john_mcdonnell.db", 
     "donald_trump.db", "hillary_clinton.db", "nigel_farage.db"] 

urls = ["https://twitter.com/femfreq", "https://twitter.com/BorisJohnson", 
    "https://twitter.com/BarackObama", 
    "https://twitter.com/MailOnline?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor", 
    "https://twitter.com/guardian?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor", 
    "https://twitter.com/thetimes", 
    "https://twitter.com/ZacGoldsmith?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor", 
    "https://twitter.com/berniesanders?lang=en-gb", 
    "https://twitter.com/George_Osborne?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor", 
    "https://twitter.com/johnmcdonnellMP?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor", 
    "https://twitter.com/realDonaldTrump?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor", 
    "https://twitter.com/HillaryClinton?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor" 
    "https://twitter.com/Nigel_Farage?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"] 

selection = 0 

for database_chosen in databases: 

    r = requests.get(urls[selection]) 
    soup = BeautifulSoup(r.content, "html.parser") 
    content =soup.find_all("div", 
       {"class": 
       "content"}) 

    db = SqliteDatabase(database_chosen) 


    class data_input(Model): 
     time_position = DateTimeField(default=datetime.datetime.now) 
     header = CharField() 
     time_posted = CharField() 
     tweet_body = CharField(unique=True) 
     class Meta: 
      database = db 

    db.connect() 
    db.create_tables([data_input], safe=True) 


    for i in content: 
     try: 
      data_input.create(header = i.contents[1].text, 
          time_posted = i.contents[3].text, 
          tweet_body = i.contents[5].text) 

     except IntegrityError: 
      pass 

    for i in content: 
     print("=============") 
     print(i.contents[1].text) 
     print(i.contents[3].text) 
     print(i.contents[5].text) 


    selection += 1 

    print("database: {} updated".format(database_chosen)) 

Для чтения файла

from peewee import * 
import datetime 

databases = ["femfreq.db", "boris_johnson.db", "barack_obama.db", 
     "daily_mail.db", "guardian.db", "times.db", "zac_goldsmith.db", 
     "bernie_sanders.db", "george_osborne.db", "john_mcdonnell.db", 
     "donald_trump.db", "hillary_clinton.db", "nigel_farage.db"] 

search_results = [] 


search_index = 0 
print("") 
print("Please enter the number for the database you want to search: ") 
for i in databases: 
    print("{}:{}".format(i, search_index)) 
    search_index += 1 

select = int(input("please select: ")) 

database_chosen = databases[select] 

db = SqliteDatabase(database_chosen) 

class data_input(Model): 
    time_position = DateTimeField(default=datetime.datetime.now) 
    header = CharField() 
    time_posted = CharField() 
    tweet_body = CharField(unique=True) 
    class Meta: 
     database = db 

db.connect() 


enteries = data_input.select().order_by(data_input.time_position.desc()) 

print(enteries) 

enteries = enteries.where(data_input.tweet_body) 
print("") 
print("The total number of tweets in {} is: {}".format(database_chosen, 
         len(enteries))) 

Для чтения файла я не поставил в функции поиска пока я перейду к тому, что, когда я могу получить эту проблема первый. Большое спасибо

ответ

0

Что вы намерены выполнить, поставив «. (Data_input.tweet_body)» в запросе на чтение записей? Попробуйте удалить всю эту строку:

entries = entries.where(data_input.tweet_body) 

Когда вы идете, чтобы добавить свой поиск, в то время вы хотите добавить, где положение ... что-то вроде:

entries = entries.where(data_input.tweet_body.contains(search_term)) 
+0

Спасибо за ответ. Сначала у меня было это, но сейчас я удалил его, так что, похоже, я ничего не вижу в базах данных при попытке его прочитать. Мне нужно выяснить, есть ли у меня проблема с записью в базы данных или чтением из баз данных. – max89

Смежные вопросы