将记录数组的元素转换为空列表的变量名
Turn elements of record array into variable names for empty lists
我正在使用 psql 数据库和 python,我需要一种方法将记录数组的每个元素转换为附加到空列表的变量。如果可能的话,我还需要避免使用全局变量。总体目标是创建一个名为 table 的变量,并将该变量设置为等于列 headers 的列表。我能够从数据库中提取包含 table 名称的记录数组,其中
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 = []
然后我可以使用第二个查询来填充每个 table 的 headers 列表。我最大的挑战是将记录数组的元素作为变量名。我不知道该怎么做,尽管我花了几个小时研究了从酸洗和字典到 for 循环和全局变量的所有内容。谢谢!
已有类似问题:
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() 是为它创建一个全局变量,否则它只是一个字符串,如果你用类似 tables[i][0] 的东西访问它并将 [] 分配给它只会改变原始数组
我正在使用 psql 数据库和 python,我需要一种方法将记录数组的每个元素转换为附加到空列表的变量。如果可能的话,我还需要避免使用全局变量。总体目标是创建一个名为 table 的变量,并将该变量设置为等于列 headers 的列表。我能够从数据库中提取包含 table 名称的记录数组,其中
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 = []
然后我可以使用第二个查询来填充每个 table 的 headers 列表。我最大的挑战是将记录数组的元素作为变量名。我不知道该怎么做,尽管我花了几个小时研究了从酸洗和字典到 for 循环和全局变量的所有内容。谢谢!
已有类似问题: 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() 是为它创建一个全局变量,否则它只是一个字符串,如果你用类似 tables[i][0] 的东西访问它并将 [] 分配给它只会改变原始数组