Как использовать cur.executemany () для хранения данных из Twitter - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь загрузить твиты из списка трех разных учетных записей, а затем сохранить всю информацию в базе данных SQL3.

Я пробовал использовать приведенный ниже код, но, похоже, он работает вечно.Я что-то пропустил?Это потому, что я использовал .executemany () вместо .execute ()?

step=0
a_list=["A","B","C"]
for s in a_list:
    cursor = tweepy.Cursor(api1.user_timeline, id = s, tweet_mode='extended').items(3189)

    for tweet in cursor: 
        tw_text.append(tweet.full_text)
        created_at.append(tweet.created_at)
        rtws.append(tweet.retweet_count)
        favs.append(tweet.favorite_count)
        for h in tweet.entities['hashtags']:
            hashlist.append(h['text'])
        for u in tweet.entities['urls']:
            linklist.append(u['expanded_url'])
        try:
            medialist.append(media['media_url'] for media in tweet.entities['media'])
        except:
            pass 
        step+=1
        print('step {} completed'.format(step))

#preparing all the data for .executemany()               
    g = [(s,tw,crea,rt,fv,ha,li,me) for s in ['GameOfThrones'] for tw in tw_text for crea in created_at for rt in rtws for fv in favs for ha in hashlist for li in linklist for me in medialist] 
    cur.executemany("INSERT INTO series_data VALUES (?,?,?,?,?,?,?,?)", (g))
    con.commit()
    print('db updated')

Я ожидаю, что программа запишет таблицу в SQL3, но я никогда не получаю сообщение «db updated» (т.е. самая последняя печать() строка)

1 Ответ

0 голосов
/ 10 апреля 2019

cur.executemany () принимает список кортежей.Каждый кортеж будет иметь столько элементов, сколько столбцов вы хотите ввести.

Например, если у вас есть таблица со следующей структурой

create table tbl_test(firstname varchar(20), lastname varchar(20));

, и вы хотите вставить 3записи в нем с помощью executemany (), ваш объект и вызов должны выглядеть следующим образом

list = [('Hans', 'Muster'), ('John', 'Doe'), ('Jane', 'Doe')]
cur.executemany('insert into tbl_test values(?, ?)', list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...