PostgreSQL查询结果推送到Twitter出现多余符号如何去除?
问题原因
cur.fetchall() 返回的是嵌套结构:外层是所有查询结果行组成的列表,每行是对应字段值组成的元组。你限制了仅返回1条结果,最终得到的Tweet变量实际值为 [("TEST",)],直接传入发布接口时会把整个结构的字符串形式发送,就出现了多余的括号、逗号符号。
解决方法
两种修改方案选其一即可:
- 方案1(推荐,适合单条查询场景):用
fetchone()替代fetchall(),直接取元组第一个元素
修改对应代码段:
cur.execute("SELECT tweet from message ORDER BY time ASC LIMIT 1") # fetchone返回单条记录的元组,取下标0的元素就是实际文本内容 tweet_content = cur.fetchone()[0] # 发布时传入纯文本变量 api.update_status(tweet_content)
- 方案2:如果需要保留
fetchall()用法,嵌套取值即可
修改对应代码段:
cur.execute("SELECT tweet from message ORDER BY time ASC LIMIT 1") # 先取列表第一个元素(第一条记录的元组),再取元组第一个元素 tweet_content = cur.fetchall()[0][0] api.update_status(tweet_content)
补充提示:如果查询可能不存在匹配结果,建议先判断返回值是否为空再进行索引取值,避免抛出异常。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

