Basic python;in text变量,用于停止我的脚本;psycopg&tweepy;python、postgres和twi

2024-04-25 01:55:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本可以挖掘tweets并将它们输入我的postgres数据库。它适用于大多数消息

我可以通过以下行返回消息的文本:

tweet.text.encode('utf-8')

每当tweet在文本中有一个'时,我的脚本就会停止。我可以做一个函数来提取tweet,并将其放在两个范围内”。但是我想当一条tweet包含一个“,”时,我也会遇到同样的问题。然后我可以创建一个函数,检查tweet上包含“or”的语句,并捕获这些语句。但对于这个简单的问题来说,似乎还有很多工作要做。你知道吗

所以我想知道如何克服这个问题,而不需要太多的脚本工作。你知道吗

我不是python方面的专家,我的问题之一是我试图以一种困难的方式解决问题,而通常有一种更简单的方法。当前的问题让我觉得这是一个这样的场景。因此,我的问题是。你知道吗

***更新

我的错误弹出时,插入到我的postgres表的消息确实。你知道吗

我刚刚尝试了repr(),但仍然收到类似的错误消息。你知道吗

Traceback (most recent call last):
  File "...python.py", line 28, in <module>
    cur.execute("INSERT INTO Test(userid, created, retweets, message) VALUES('{0}', '{1}', '{2}', '{3}')".format(tweet.user.id, tweet.created_at, tweet.retweet_count, ber))
psycopg2.ProgrammingError: syntax error at or near "E19"
LINE 1: ...LUES('1251822199', '2016-02-27 10:23:40', '0', 'b'E19 (A1) M...

第四个参数是tweet的文本,以'b'E19开始作为文本。它在这里失败了。你知道吗

我用于将数据输入postgres的行如下所示:

cur.execute("INSERT INTO Test(message) VALUES('{0}')".format(repr(tweet.text.encode('utf-8'))))

Tags: or函数text文本脚本消息错误postgres
1条回答
网友
1楼 · 发布于 2024-04-25 01:55:48

因为您是使用字符串操作手动创建查询,所以需要对查询中的引号进行转义。你知道吗

但是更好的方法是使用参数化查询并允许psycopg2执行特殊字符的转义。如果某些参数来自不受信任的源(例如用户),这也会使代码不易受到SQL注入攻击。你知道吗

cur.execute("INSERT INTO Test(message) VALUES(%s)", (tweet.text.encode('utf-8'),))

或者

cur.execute("INSERT INTO Test(userid, created, retweets, message) VALUES(%s, %s, %s, %s)", (tweet.user.id, tweet.created_at, tweet.retweet_count, ber))

现在DB层将为您执行转义。你知道吗

相关问题 更多 >