Postgres无法在Python中获取数据

问题描述 投票:1回答:1

我使用Python和psycopg2模块从Postgres数据库中获取数据。

数据库非常大(几十GB)。

一切似乎都在工作,我正在从获取的数据创建对象。但是,在创建约160000个对象后,我收到以下错误:

Error

我想原因是数据量,但我无法在任何地方搜索在线解决方案。我不知道使用任何代理,从来没有在这台机器上使用任何代理,数据库在localhost上。

python postgresql bigdata psycopg2
1个回答
2
投票

有趣的是,“它是一个本地服务器,所以我不接受SQL注入”这种立场导致人们认为字符串插值比参数化查询更容易。在你的情况下,它最终得到:

'... cookie_id = \'{}\''.format(cookie)

所以你最终得到了一些不太清晰但也失败的东西(虽然从特定的错误我不确切知道如何)。使用参数化:

cursor.execute("SELECT user_id, created_at FROM cookies WHERE cookie_id = %s ORDER BY created_at DESC;", (cookie,))

最重要的是,始终以正确的方式做到这一点。请注意,有些情况下您必须使用字符串插值,例如对于表名:

cursor.execute("SELECT * FROM %s", (table_name,)) # Not valid
cursor.execute("SELECT * FROM {}".format(table_name)) # Valid

在这些情况下,如果其他人可以与代码进行交互,您需要采取其他预防措施。

© www.soinside.com 2019 - 2024. All rights reserved.