如何将从 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
我有一个带有消费者密钥、消费者秘密、访问令牌、访问令牌秘密的 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