Psycopg2 copy_expert 返回与直接查询不同的结果

发布于 2025-01-09 16:25:46 字数 656 浏览 0 评论 0原文

我正在尝试解决这个问题,这个问题已经困扰我几周了。我正在尝试使用 psycopg2 和复制专家将 Postgresql 数据库中的查询结果复制到 csv 文件中,但是当我的脚本完成运行时,有时我最终得到的行数比使用 pgAdmin 直接将查询运行到数据库中的行数要少。这是运行查询并将其保存到 csv 中的代码:

cursor = pqlconn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)

fd = open("query.sql", 'r')
sql_query = fd.read()

fd.close()
csv_path = 'test.csv'
query = "copy  (" + sql_query + \
    ") TO STDOUT WITH (FORMAT csv, DELIMITER ',', HEADER)"
with open(csv_path, 'w', encoding='utf-8') as f_output:

    cursor.copy_expert(query, f_output)
print("Saved information to csv: ", csv_path)`

当它运行时,我有时会得到比直接在数据库上运行它更少的行,再次运行它仍然返回比我已经看到的更少的行直接数据库。希望对此有任何指导,谢谢!

I am trying to debug this issue that I have been having for a couple of weeks now. I am trying to copy the result of a query in a Postgresql db into a csv file using psycopg2 and copy expert, however when my script finishes running, sometimes I end up with less rows than if I ran the query directly into the db using pgAdmin. This is the code that runs the query and saves it into a csv:

cursor = pqlconn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)

fd = open("query.sql", 'r')
sql_query = fd.read()

fd.close()
csv_path = 'test.csv'
query = "copy  (" + sql_query + \
    ") TO STDOUT WITH (FORMAT csv, DELIMITER ',', HEADER)"
with open(csv_path, 'w', encoding='utf-8') as f_output:

    cursor.copy_expert(query, f_output)
print("Saved information to csv: ", csv_path)`

When it runs I will sometimes end up with less rows than if I ran it directly on the db, running it again still returns less rows than what I am already seeing in the db directly. Would appreciate any guidance on this, thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文