gpt4 book ai didi

python - 从 python 中的字典创建 postgres 表

转载 作者:行者123 更新时间:2023-11-29 13:39:24 25 4
gpt4 key购买 nike

我在 python 中使用 dataset 包连接到我本地机器上的 postgres 数据库。连接后,我运行以下代码:

db = dataset.connect('postgresql://user:password@localhost:5432/db')

my_dict = {'Person': ['Joe', 'Lou', 'Kim', 'Tim', 'Emma'],
'Age': [40, 37, 13, 8, 3],
'Height': ["5'11", "5'6", "5'8", "4'3", "3'0"]}

table = db['new_data']
table.insert(my_dict)

这会在我的本地数据库中创建一个名为 new_data 的表,但结果如下所示:

 id |             Person             |      Age       |         Height        
----+--------------------------------+----------------+------------------------
1 | {Joe,Lou,Kim,Tim,Emma} | {40,37,13,8,3} | {5'11,5'6,5'8,4'3,3'0}

本质上,我的字典项的所有值都返回到同一行。这应该与每个项目有不同的行,类似于数据框。

    Person  Age Height
0 Joe 40 5'11
1 Lou 37 5'6
2 Kim 13 5'8
3 Tim 8 4'3
4 Emma 3 3'0

我结合了我尝试过的事情:

我手动创建了字典 {k:v}。当我传递该对象以将其插入表中时,这会起作用,但它会使行不正确,如您在上面看到的那样。我还尝试使用 to_dict 函数,从 pandas DataFrame 创建字典,但出现以下错误:

ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'dict'

这似乎与使用 to_dict 函数时如何创建 dictionary 项有关,因为键是列名,但值是嵌套字典,以行索引作为键,以行值作为值。

我尝试的另一件事是使用字典理解创建字典,迭代数据框。我得到与上面相同的错误。我不知道如何解决这个问题。

最佳答案

假设 dict 中的所有键长度相等,您可以将上面的字典转换为以下形式。

[{'Person': 'Joe', 'Age': 40, 'Height': "5'11"},
{'Person': 'Lou', 'Age': 37, 'Height': "5'6"},
{'Person': 'Kim', 'Age': 13, 'Height': "5'8"},
{'Person': 'Tim', 'Age': 8, 'Height': "4'3"},
{'Person': 'Emma', 'Age': 3, 'Height': "3'0"}]

现在您可以迭代并将每个 dict 对象插入到您的表中,如下所示,

for pos, val in enumerate(my_dict['Person']):
table.insert({'Person': val, 'Age': my_dict['Age'][pos], 'Height': my_dict['Height'][pos]})

关于python - 从 python 中的字典创建 postgres 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57581070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com