小编Sim*_*onB的帖子

Python JSON - 查找动态路径上的元素

我必须更新嵌套的 JSON 对象。
如果我知道要更新哪些项目的具体细节,我可以这样做:

json_object['basket']['items']['apple'] = 'new value'
Run Code Online (Sandbox Code Playgroud)

然而,我的目标元素列表是动态的。

> basket.items.apple = 'green'
> name = 'my shopping'
> basket.cost = '15.43'
Run Code Online (Sandbox Code Playgroud)

我可以通过循环元素来做到这一点。
查找“篮子”> 然后查找“项目”> 然后查找“苹果”> 设置值
查找“名称”> 设置值

然而,希望有一种方法可以直接/动态引用。
即从字符串'basket.cost'构建表达式:

json_object['basket']['cost']
Run Code Online (Sandbox Code Playgroud)

PS它也必须处理字典列表!

任何指导表示赞赏:)

python

7
推荐指数
1
解决办法
753
查看次数

开发运营:带有 Terraform 的 AWS Lambda .zip

我已经编写了 Terraform 来在 AWS 中创建 Lambda 函数。这包括指定我的 python 代码已压缩。从命令行运行到我的技术箱,一切顺利。terraform apply 操作会将我的 zip 移至 AWS 并用于创建 lambda。

代码关键部分:

resource "aws_lambda_function" "meta_lambda" {
              filename = "get_resources.zip"
              source_code_hash = filebase64sha256("get_resources.zip")
              .....
Run Code Online (Sandbox Code Playgroud)

现在,为了将其应用到其他环境中,我必须通过 Azure DevOps 推送我的 Terraform。然而,当我尝试在 DevOps 中构建时,我得到以下信息:

错误:资源“aws_lambda_function”“meta_lambda”中 main.tf 第 140 行的函数调用出错:140:source_code_hash = filebase64sha256(“get_resources.zip”) 调用函数“filebase64sha256”失败:get_resources.zip 中不存在文件。

我有一种感觉,我在这里缺少一个关键概念,因为我可以在存储库中看到 .zip - 所以不明白构建如何找不到它?

关于我做错了什么的任何提示/线索,非常欢迎。

在此输入图像描述

aws-lambda terraform azure-devops

6
推荐指数
1
解决办法
6320
查看次数

雅典娜相当于 information_schema

对于背景,我来自 SQLServer 背景并大量使用系统表和信息模式,告诉我有关我的表和列的所有信息。

我没想到雅典娜有完全相同的力量,但目前对似乎可用的东西感到非常震惊和沮丧 - 除非我错过了什么?

例如,'describe mytable' - 一次只描述 1 个表。如何在一个结果中显示所有表的列?它也不输出表名,也不允许您手动将其添加为自定义列。

这些“show/list/describe”命令的所有结果似乎都生成了一个文本列表——而不是一个记录集,因此您不能将这些结果连接到其他表或视图中以生成更复杂的输出。

还有其他方法可以查询我的数据库内容吗?

提前致谢

amazon-athena

5
推荐指数
1
解决办法
7691
查看次数

从 redshift 存储过程返回结果集

我有一个使用游标方法返回记录集的过程:

CREATE OR REPLACE PROCEDURE myschema.permissions_sp(rs_out INOUT refcursor)
 LANGUAGE plpgsql
 SECURITY DEFINER
AS $$
BEGIN
  OPEN rs_out FOR select schema_name,schema_owner,grantee_type,grantee,p_usage,p_create,object_name,perms,p_select,p_update,p_insert,p_delete,p_truncate,p_references,p_trigger,p_rule from xxxx.myview;
END;
$$ 
/
GRANT EXECUTE on PROCEDURE myschema.permissions_sp(INOUT refcursor)  TO xxxx_user
/
Run Code Online (Sandbox Code Playgroud)

我可以使用我的管理员登录名在工作台上完美地调用它。

BEGIN;
CALL meta.permissions_sp('apples'); 
COMMIT;
Run Code Online (Sandbox Code Playgroud)

结果是 16 列 x >7k 行的数据集

(说实话,我什至不需要做交易部分,它只需使用 CALL 就可以正常运行)

然而,当我通过 psycopg2 调用它时,会发生以下情况:

cur = conn.cursor()
cur.execute("CALL meta.permissions_sp('apples');")
conn.commit()
rows = cur.fetchall()
print('rows:%s' % (rows))
Run Code Online (Sandbox Code Playgroud)

输出:

> rows:[('apples',)]
Run Code Online (Sandbox Code Playgroud)

我尝试过使用提交而不是使用它。只是真的很难理解发生了什么。在这个阶段,不确定这是否是我从 Python 调用的方式,或者是在 Redshift 方面的调用方式。

任何指导表示赞赏!

python postgresql psycopg2 amazon-web-services amazon-redshift

5
推荐指数
1
解决办法
2973
查看次数

Redshift json_serialize 双引号

我正在从 S3 摄取(复制)json 数据。
最初存储在单个 SUPER 列中,然后将各个属性提取到规范化的表/列中,每个属性具有常用的数据类型(varchar、整数等......)

我的问题是这样的

json_serialize("json"."myattribute") as "mycolumn"
Run Code Online (Sandbox Code Playgroud)

结果值是用原始 json 双引号引起来的

“苹果”

我想要的地方

苹果

当然,我可以进行“替换”,但仍然希望有一种简单的方法可以在不使用引号的情况下进行提取?

谢谢

amazon-redshift

1
推荐指数
1
解决办法
1610
查看次数