使用 encode/databases fecthall 方法的值替换

Value substitution using encode/databases fecthall method

我正在使用 encode/databases(https://www.encode.io/databases/database_queries/) 已配置为使用 postgresql+aiopg://DBUSER:DBPASS@1.2.3.4:1234/SOMEDB 取以下函数:

async def get_table_sample(table_name: str, db: Database):
    result = await db.fetch_all("SELECT * FROM :table_name limit 100", values={"table_name": table_name})
    return result

当运行时,抛出以下错误:

psycopg2.errors.SyntaxError: at or near "rally_iteration": syntax error
DETAIL:  source SQL:
SELECT * FROM 'rally_iteration' limit 100

注意 subbed 变量周围的引号。如果我将查询硬编码为 "SELECT * from rally_iteration limit 100" 一切都按预期工作。

感谢任何帮助。谢谢!

asyncpg 和许多其他 sql 库不支持 FROM 子句中的变量替换。