Python Asyncpg";语法错误位于或接近$1“;错误

Python Asyncpg";语法错误位于或接近$1“;错误,python,postgresql,python-asyncio,roles,asyncpg,Python,Postgresql,Python Asyncio,Roles,Asyncpg,我试图通过asyncpglibrary传入参数,为我的Postgres数据库创建用户: await pool.execute( "create user $1 with password '$2' noinherit connection limit 1 in role buyers", login, password,) 然而,当我试图运行代码时,我得到了以下错误: asyncpg.exceptions.PostgresSyntaxError:在“$1”处或附近出现

我试图通过
asyncpg
library传入参数,为我的Postgres数据库创建用户:

await pool.execute(
    "create user $1 with password '$2' noinherit connection limit 1 in role buyers",
    login, 
    password,)
然而,当我试图运行代码时,我得到了以下错误:
asyncpg.exceptions.PostgresSyntaxError:在“$1”处或附近出现语法错误

我知道我不能在
asyncpg
中将表名或数据库名作为参数传入,但我找不到任何关于用户名或密码的类似信息


如果是这种情况,请告诉我,或者我可能需要以某种方式格式化
登录
密码
变量的内容,以使其工作?

是的,用户名和密码也不支持参数化查询。您需要自己进行标识符转义/文字转义,并插入SQL字符串。@Bergi谢谢您的回答,您能解释一下
标识符转义/文字转义是什么意思吗?如果这是一个广泛的话题,我会很高兴一些链接,可以解释给我,谢谢!我也没有在文档中找到,但请参见,例如,我的意思是用户名是一个,密码是一个。您的postgres客户端库应该提供帮助函数,以便根据规则对它们进行转义。@Bergi好的,我已经阅读了关于这两个函数的一些文档。我需要在登录时调用
quote_ident()
,在密码时调用
quote_literal()
,还是只在登录时调用
?另外,我需要在查询之后还是在查询内部调用这些函数?如果我需要在内部调用它,我会这样做:
“使用密码quote\u literal($2)在角色买家中创建用户quote\u ident($1)noinherit连接限制1”
,还是我需要做些其他事情才能使其正常工作?感谢所有的帮助!是的,用户名和密码也不支持参数化查询。您需要自己进行标识符转义/文字转义,并插入SQL字符串。@Bergi谢谢您的回答,您能解释一下
标识符转义/文字转义是什么意思吗?如果这是一个广泛的话题,我会很高兴一些链接,可以解释给我,谢谢!我也没有在文档中找到,但请参见,例如,我的意思是用户名是一个,密码是一个。您的postgres客户端库应该提供帮助函数,以便根据规则对它们进行转义。@Bergi好的,我已经阅读了关于这两个函数的一些文档。我需要在登录时调用
quote_ident()
,在密码时调用
quote_literal()
,还是只在登录时调用
?另外,我需要在查询之后还是在查询内部调用这些函数?如果我需要在内部调用它,我会这样做:
“使用密码quote\u literal($2)在角色买家中创建用户quote\u ident($1)noinherit连接限制1”
,还是我需要做些其他事情才能使其正常工作?感谢所有的帮助!