将记录数组的元素转换为空列表的变量名

2024-05-16 20:17:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用psql数据库和python,我需要一种方法将记录数组的每个元素转换为附加到空列表的变量。如果可能的话,我还需要避免全局变量。总体目标是创建一个表名为的变量,并将该变量设置为列标题列表。我能够从数据库中提取一个包含表名的记录数组

tables= db.query2rec("""select table_name from information_schema.tables where table_schema = 'public';""")

db和query2rec用psycopg2的东西给我

tables= rec.array([('table1',), ('table2',), ('table3',), ('table4',), ('table5',)], 
    dtype=[('table_name', 'O')])

我要把它做成

table1 = []
table2 = []
table3 = []
table4 = []
table5 = []

然后,我可以使用第二个查询,用每个表的标题列表填充每个表。我最大的挑战是获取记录数组的元素作为变量名。我不知道该怎么做,尽管我花了几个小时研究了从酸洗、字典到for循环和全局变量的所有内容。谢谢!你知道吗


Tags: name数据库元素标题列表dbtablesschema
1条回答
网友
1楼 · 发布于 2024-05-16 20:17:51

类似的问题已经存在: How do you create different variable names while in a loop?

在这种情况下,必须循环遍历元组数组:

tables= rec.array([('table1',), ('table2',), ('table3',), ('table4',), ('table5',)], 
dtype=[('table_name', 'O')])

为此,我使用了一个“numpy”数组,但也应该使用您的数组,这是我使用的代码:

import numpy as np
tables = np.asarray([('table1',), ('table2',), ('table3',), ('table4',), ('table5',)], 
dtype=[('table_name', 'O')])

for i in range(len(tables)):
    globals()[str(tables[i][0])] = []

输出为:

print(table1)
[]

tables[i][0]部分用于访问元组的第一个元素,它是数组“i”位置的第一个元素

globals()是将其创建为全局变量,否则它将只是一个字符串,如果您使用表[i][0]之类的内容访问它,并将[]赋给它,则只会更改原始数组

相关问题 更多 >