我有3个名为
的列表schema_list, table_list, column_list
架构,表格和列具有1:1匹配,意味着schema_list[0][0]
对应table_list[0][0]
对应column_list[0][0]
。例如,它可能看起来像:
x = schema_list[0][0]+'.'+table_list[0][0]+'.'+column_list[0][0]
print x
输出:
'account_schema.account_table.account_column'
如何遍历所有列表,以便我可以生成类似上面的输出但是整个列表。
我试过这样的事情:
for schemas in schema_list:
for tables in table_list:
for columns in column_list:
x = """
SELECT
count({2})
FROM {0}.{1}
""".format(schemas,tables,columns)
print x
输出贯穿整个列表,但我有几个重复,所以我必须遗漏一些东西。
我也尝试过:
表示zip中的a,b,c(schema_list,table_list,column_list): y =“”“ 选择 计数({2}) 从{0}。{1} “”” .format(A,B,C) 打印
得到一个输出:
SELECT
count(0 account_id
employer_id
search_date
FROM 0 schema1
schema1
schema1
table1
table1
table
看起来for循环会将整个列表转储到第一次迭代中吗?
2.如果我这样做:
for a,b,c in zip(schema_list[0], table_list[0], column_list[0]):
y = """
SELECT
count({2})
FROM {0}.{1}
""".format(a,b,c)
print y
输出打印单个元素,但不会遍历table_list中的所有表。它会迭代遍历column_list中的所有列。
这不是重复的帖子,因为这是一个二维数组。这是解决方案:
sql_queries=[]
for x in xrange(len(schema_list)):
for a,b,c in zip(schema_list[x], table_list[x], column_list[x]):
y = """
SELECT
count({2})
FROM {0}.{1}
""".format(a,b,c)
sql_queries.append(y)