Python:同一函数中需要的变量的名称和“内容”

时间:2018-12-04 15:17:37

标签: python python-3.x pandas

Queries中的变量每个都包含一个SQL查询。例如DF_Articles = 'Select * from Article_Master'。因此,我函数的pd.read_sql_query部分起作用。

不起作用:我想创建和存储以查询命名的CSV文件,每个文件都包含查询的内容。

但是当我尝试存储它们(即Query_csv.to_csv('SQL_data/{}.csv'.format(Query)))时,变量Query包含整个SQL查询,而不仅仅是名称(即DF_Articles)。 有解决方法吗?还是我看不到明显的东西?

Queries = [DF_TripHeader, DF_Articles]

def get_data_from_sql():
if not os.path.exists('SQL_data'):
    os.makedirs('SQL_data')

for Query in Queries:
    if not os.path.exists('SQL_data/{}.csv'.format(Query)):
        Query_DF = pd.read_sql_query(Query,Conn_SQL)
        Query_DF.to_csv('SQL_data/{}.csv'.format(Query))
    else:
        print('Already downloaded {}'.format(Query))

get_data_from_sql()

编辑:根据handras和Doctorlove的输入进行了更改。现在就可以使用!

Queries = {"DF_TripHeader":DF_TripHeader,"DF_Articles":DF_Articles}

def get_data_from_sql():
if not os.path.exists('SQL_data'):
    os.makedirs('SQL_data')

for name, Query in Queries.items():
    if not os.path.exists('SQL_data/{}.csv'.format(name)):
        Query_csv = pd.read_sql_query(Query,Conn_SQL)
        Query_csv.to_csv('SQL_data/{}.csv'.format(name))
    else:
        print('Already downloaded {}'.format(name))

get_data_from_sql()`

1 个答案:

答案 0 :(得分:2)

我将收集器变量设为字典。

Queries = {"DF_TripHeader" : DF_TripHeader, "DF_Articles" : DF_Articles}

现在您可以像这样迭代:

for name, query in Queries.items():
    ...

如果您觉得声明查询然后再存储在字典中是多余的,则可以一步完成。

Queries = {
    "DF_TripHeader" : "Select * from TripHeader",
    "DF_Articles"   : "Select * from Article_Master"
}