gpt4 book ai didi

python - psycopg 中的 `cursor` 类有什么意义?

转载 作者:太空狗 更新时间:2023-10-29 20:56:15 26 4
gpt4 key购买 nike

我想用 INSERT 和 UPDATE 修改一些数据。从 psycopg 教程看来我需要

cur = connection.cursor()
cur.execute(my_insert_statement)
connection.commit()

Psycopg 的 cursor class似乎与 postgres 定义的游标无关.

如果我模块化我的脚本,我应该在主模块和一些工作函数中创建一个连接(没有线程,只是为了模块化)

  1. 每次将连接参数传递给函数并重新创建游标。频繁创建新的游标对象是否有很大的开销?

    def process_log_file(self, connection):
  2. 同时传递连接和游标 - 使函数签名和实现不必要地复杂化

    def process_log_file(self, connection, cursor):
  3. 仅将光标作为参数传递并使用 mycursor.connection.commit() 进行提交

    def process_log_file(self, cursor):

最佳答案

这三个中的任何一个都可以(这主要是个人品味问题)但我更喜欢 (1)。原因如下:

cursor 类型是轻量级的,创建它除了创建一个新的 Python 对象之外没有做任何特别的事情。欢迎您创建、使用(提交/回滚)和销毁任意数量的游标,特别是如果这有助于您保持代码整洁有序。

此外,当您处理需要访问来自多个不同查询的数据的复杂逻辑时,游标也很重要:在这种情况下,游标充当数据的持有者/迭代器.

最后,绕过 connection(您到后端的真实句柄)并将游标保持在特定函数/方法的本地只是“感觉正确”。

关于python - psycopg 中的 `cursor` 类有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23389116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com