【发布时间】:2022-06-23 23:03:02
【问题描述】:
我想使用 PartiQL 通过 boto3 查询 DynamoDB 表。 当我像这样使用它时,我工作得很好:
stmt = "SELECT * FROM Onlineshop WHERE PK= 'c#12345'"
resp = dynamodb.execute_statement(Statement= stmt)
但是当我用 f-literal 替换 select 语句中的某些值时,它会失败。
PK = 'c#12345'
table_name = 'Onlineshop'
stmt = f' "SELECT * FROM {table_name} WHERE PK= {PK}" '
resp = dynamodb.execute_statement(Statement= stmt)
可能是什么原因?
提前谢谢你
W
【问题讨论】:
-
不要使用字符串格式构造 SQL 查询。
execute_statement几乎肯定支持参数化查询。 -
您的 immediate 问题是您将用于 define
str文字的双引号包含为 literal characters i> 在新的str值中。 -
@chepner 它几乎适用于参数化版本,只是不能用它替换表名。有什么提示吗?
-
我知道
psycopg2提供了一些额外的扩展来安全地构建查询;我不知道dynamodb。
标签: python amazon-web-services amazon-dynamodb partiql