gpt4 book ai didi

python - 如何扩展 `psycopg2.extras.DictCursor`?

转载 作者:行者123 更新时间:2023-12-01 04:55:31 24 4
gpt4 key购买 nike

我想使用 python3-psycopg2 (2.5.4) 游标,它可以:

1)以类似字典的方式访问查询结果

2) 使用logging模块自动记录该游标执行的每条sql

我尝试了以下代码,它不起作用,我做错了什么?我可以扩展 psycopg2.extensions.cursor,但这不允许我执行 1)。

class LoggingCursor(psycopg2.extras.DictCursor):
def __init__(self, *args, **kwargs): # it didn't work with or
super().__init__(*args, **kwargs) # without these 2 lines

def execute(self, sql, args=None):
from beautiful import app
# logger = blah blah
logger.debug(self.mogrify(sql, args).decode())
psycopg2.extensions.cursor.execute(self, sql, args)

cursor = db_conn.cursor(cursor_factory=LoggingCursor)

当我cursor.execute(some_sql)时,它给了我:

File "some_file.py", line 123, in some_function
some_var = cursor.fetchone()
File "/usr/local/lib/python3.4/dist-packages/psycopg2/extras.py", line 63, in fetchone
res = super(DictCursorBase, self).fetchone()
File "/usr/local/lib/python3.4/dist-packages/psycopg2/extras.py", line 139, in __init__
self._index = cursor.index

AttributeError: 'LoggingCursor' object has no attribute 'index'

最佳答案

改变一下怎么样

psycopg2.extensions.cursor.execute(self, sql, args)

super().execute(sql, args)

以便调用基类execute()方法?

关于python - 如何扩展 `psycopg2.extras.DictCursor`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27503864/

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