[100%工作的Python装饰器DB连 接器在VS代码中显示错误

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

我创建了一个装饰器来处理这样的数据库连接:

def with_connection(f):
  def with_connection_(args, **kwargs):

    conn = mysql.connector.Connect("my redacted credentials")
    try:
        result = f(conn, args, **kwargs)
    except:
        conn.rollback()
        print("SQL failed")
        raise
    else:
        conn.commit()
    finally:
        conn.close()
    return result
return with_connection_

我这样称呼它:

@with_connection
def GetUsername(conn, args):
    Cursor = conn.cursor()
    query = "select user_name from users where user_id = %s"
    Cursor.execute(query, (args[0],))
    result = Cursor.fetchone()
    return result

user_name = DBQueries.GetUsername(user_id)

此代码可以正常工作。

但是,在VS Code中,我收到了以下错误报告,我觉得我应该理解为什么会发生这种情况:

"message": "No value for argument 'args' in function call",

我有点理解,因为GetUsername有2个参数,conn和args,我用一个参数调用它,因此它认为它缺少args参数。但是有效。

谁能为我澄清这是怎么回事?

python visual-studio-code connection python-decorators
1个回答
0
投票

您的IDE基本上是困惑的,因为GetUsername确实期望使用不同的参数。在某些IDE中,可以通过将内部函数包装为@functools.wraps(f)来解决此问题。 (https://docs.python.org/3/library/functools.html#functools.wraps)。这基本上是对包装函数的元信息的适当照顾,因此它类似于原始函数的信息。

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