如何在预准备语句游标中添加集合(列表等)参数

时间:2018-01-13 01:40:59

标签: postgresql cursor prepared-statement python-3.6 asyncpg

所以我使用asyncpg预处理语句并执行查询。我在查询中传递位置参数。

目前,我通过stmt.cursor(params[0], params[1]),但如果我不知道有多少参数正在传递,那么想要将一个列表或其他内容传递给此方法。在这种情况下如何实现这一目标?

我目前的代码:

async def execute_ps(dsn):
    conn = await asyncpg.connect(dsn)

    sql_query = """select * from table1 where id = $1 and name=$2"""
    params = [var1, var2]
    stmt = await conn.prepare(sql_query)

    result = []

    try:
        async with conn.transaction():
            async for record in stmt.cursor(params[0], params[1]): # want to pass list here
                print(record)
                result.append(record)
    except Exception as e:
        print("exception: {}", e)

    if conn is None:
        await conn.close()

    return result

1 个答案:

答案 0 :(得分:0)

我的坏。我发现它必须使用*。我是python的新手,所以没想到它!

async for record in stmt.cursor(*params)