如何将从 sqlite3 接收到的值传递给 Python 中的 Twython 对象

How to pass the values recieved from sqlite3 to Twython object in Python

我有一个带有消费者密钥、消费者秘密、访问令牌、访问令牌秘密的 sqlite3 数据库。

我正在 SELECT 处理所有数据并遍历游标。打印时我得到了数据,但由于某种原因无法将其传递给 twython 对象。

这是我尝试的第一个代码:

#!/usr/bin/env pythons
from twython import Twython
from time import sleep
import sqlite3

db = sqlite3.connect('./mydb')
cursor = db.cursor()

cursor.execute ('''SELECT app_key, app_secret, oauth_token, oauth_token_secret FROM users''')

for row in cursor:
    twitter = Twython(row[0], row[1], row[2], row[3])
    search = twitter.search(q = '#peace', count = 10)
    tweets = search['statuses']
    for tweet in tweets:
        b = tweet['id']
        print(b)
        twitter.retweet(id = b)
        sleep(60)

db.close()

然后我试了这个:

#!/usr/bin/env pythons
from twython import Twython
from time import sleep
import sqlite3

db = sqlite3.connect('./mydb')
cursor = db.cursor()

cursor.execute ('''SELECT app_key, app_secret, oauth_token, oauth_token_secret FROM users''')

for row in cursor:
    twitter = Twython('{0}, {1}, {2}, {3}'.format(row[0], row[1], row[2], row[3]))
    search = twitter.search(q = '#peace', count = 10)
    tweets = search['statuses']
    for tweet in tweets:
        b = tweet['id']
        print(b)
        twitter.retweet(id = b)
        sleep(60)

db.close()

错误代码:

twython.exceptions.TwythonAuthError: Twitter API returned a 400 (Bad Request), Bad Authentication data.

作为附加步骤,我尝试手动传递凭据(消费者密钥、消费者秘密、访问令牌、访问令牌秘密),它非常有效!

有人可以告诉我我做错了什么吗?根据我的说法,第一个代码应该可以正常工作!

提前致谢!

显然,问题是由字符串周围的白色 space 引起的。

我通过使用 strip() 函数从返回的字符串中去除所有不必要的 white-space 解决了这个问题!

当前代码:

#!/usr/bin/env pythons
from twython import Twython
from time import sleep
import sqlite3

db = sqlite3.connect('./mydb')
cursor = db.cursor()

cursor.execute ('''SELECT app_key, app_secret, oauth_token, oauth_token_secret FROM users''')

def stripStr(str1,str2,str3,str4):
    return str1.strip(), str2.strip(), str3.strip(), str4.strip()

for row in cursor:
    app_key, app_secret, oauth_token, oauth_token_secret = stripStr(user[0], user[1], user[2], user[3])
    twitter = Twython(app_key, app_secret, oauth_token, oauth_token_secret)
    search = twitter.search(q = '#peace', count = 10)
    tweets = search['statuses']
    for tweet in tweets:
        b = tweet['id']
        print(b)
        twitter.retweet(id = b)
        sleep(60)

db.close()

琢磨了一天,终于成功了! <3