我试图用psycopg2
来阅读Postgres
。你知道吗
我正在从一个名为deployment的数据库表中读取数据,并尝试从一个包含三个字段id、Key和Value的表中处理一个值。你知道吗
其中一个键是LIST_CONFIG
,其值如下:
list_config: {
"configone":{
"disk_size":100,"machine_type":"large","region":"us-west-1"},
"configtwo":{
"projectname":"project","zone":"us-east1-b"}
}
我正在尝试获取list_config.configone.region
(即us-west-1)的区域
我通过运行以下代码获得上述list_config
:
import psycopg2
conn = psycopg2.connect(host="localhost",database=database, user=user, password=password)
cur = conn.cursor()
cur.execute("SELECT \"Value\" FROM deployment WHERE (\"Key\" = 'LIST_CONFIG')")
row = cur.fetchone()
print(row[0])
即使执行了以下操作,我也无法获得list_config.configone.region
:
row = cur.fetchone()
config = row[0]
print('config: %s', config["configone"])
我搞错了
Arguments: (TypeError('string indices must be integers',),)
我还尝试了以下方法
row = cur.fetchone()
config=row[0]
args=namedtuple('row',config.keys()).*config.values())
print('args: %s', args)
这就产生了错误Arguments: (AttributeError("'str' object has no attribute 'keys'",),)
有没有办法使用cursor\u factory=DictCursor返回dict而不是Tuple?你知道吗
++用解决方案编辑-以下是我最后的工作++
我最终发现行是一个元组,行[0]是一个字符串。所以我用json.loads文件将其转换为json对象。然后我就可以打印这个区域了
row = cur.fetchone()
config_json = json.loads(row[0])
region = config_json['configone']['region']
print('Region: %s', region)
目前没有回答
相关问题 更多 >
编程相关推荐