Python: имя и «содержимое» переменной, необходимой в одной и той же функции - PullRequest
0 голосов
/ 04 декабря 2018

В каждой переменной Queries содержится SQL-запрос.Например DF_Articles = 'Select * from Article_Master'.По этой причине часть pd.read_sql_query моей функции работает.

Что не работает: я хочу создавать и хранить CSV-файлы с именем Query, каждый из которых содержит содержимое запроса.

Но когда я пытаюсь сохранить их (например, 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 голосов
/ 04 декабря 2018

Я бы сделал переменную сборщика словарём.

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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...