postgresql - 使用 boto3 将枚举类型插入 aurora postgres
问题描述
我有一个模式,它有一个字符串和枚举,我正在尝试使用 boto3 写入。我创建一个 sql,指定参数并运行 execute_statement。字符串和日期足够简单:
sql = """
insert into scrape_results(lname,fname, dob) values (:lname, :fname, :dob)
"""
param1 = {'name':'lname', 'value':{'stringValue': 'xx'}}
param3 = {'name':'dob', 'typeHint': 'DATE', 'value':{'stringValue': '1970-01-01'}}
param_set = [param1, param2]
response = rds_data.execute_statement(
resourceArn = cluster_arn,
secretArn = secret_arn,
database = 'db',
sql = sql,
parameters = param_set)
我拥有的第三个字段是一个枚举。我不遵循如何插入枚举。enum 没有 typeHint,boto 不接受 stringValue。我试过这个:(court_type是枚举)
param3 = {'name':'court', 'value':{'stringValue': 'court'}}
An error occurred (BadRequestException) when calling the ExecuteStatement operation:
ERROR: operator does not exist: court_type = character varying
Hint: No operator matches the given name and argument type(s).
You might need to add explicit type casts
解决方案
我求助于这个来解决它:
sql_statement = f"""
INSERT INTO
s_info(jurisdiction, court, us_state)
VALUES(
'{req.jurisdiction}',
'{req.court_type}', #enum
'{req.state}'
)
ON CONFLICT DO NOTHING
"""
rds_data = boto3.client('rds-data', region_name='xxx')
try:
response = rds_data.execute_statement(
resourceArn=CLUSTER_ARN,
secretArn=SECRET_ARN,
database=DATABASE,
sql=sql_statement
)
except ClientError as exc:
#print(f"failed to execute {sql_statement} because {exc}")
raise
推荐阅读
- data-modeling - Kimball 和 Inmon 建模方法的区别
- laravel - Laravel on Docker, SQLSTATE[08006] [7] SCRAM 认证需要 libpq 版本 10 或以上
- javascript - 当 Ant 设计抽屉打开主体滚动其工作时
- javascript - IE 模式下的 Microsoft Edge
- wpf - 无法让我的图表出现在 Charts.WPF 中
- ansible - Ansible 更新自定义键的现有哈希值
- azure-functions - 可以使用 Terraform 为 Azure Functions 配置运行状况检查吗?
- azure - 在 ubuntu Azure DevOps 代理上安装 sqlpackage 和 azureps
- code-signing - 将 EV 证书从 SafeNet 导出到 pfx
- python - Python unittest 返回 MagicMock 对象而不是返回值