Как использовать атрибут функции как объект Python, а также строку - PullRequest
0 голосов
/ 15 ноября 2018

В основном мой код выглядит следующим образом:

df_name.to_sql('df_name', engine, index=False)

То, что я хотел бы сделать, - это обернуть его в функцию и дважды использовать df_name:

def df_2_sql(df):
   df.to_sql(f'{df}', engine, index=False)

df_list = [df_table_a, df_table_b, df_table_c]

for df in df_list: 
    df_2_sql(df)

... Я ожидал, что f'{df}' сработает, но, к сожалению, это не так. Я хочу использовать df_list как объекты pandas, а также часть имени таблицы в функции to_sql().

Я уже пытался использовать два списка

df_list = [df_table_a, df_table_b, df_table_c]
df_list = ['df_table_a', 'df_table_b', 'df_table_c']

.. и функция, которая ожидает два аргумента, но она не выглядит правильной или умной. Что я делаю неправильно?

1 Ответ

0 голосов
/ 15 ноября 2018

Используйте словарь

Преобразовывать имена переменных в строки не очень хорошая идея. Если вам нужна эта функциональность, создайте словарь и пары ключ-значение для своей функции:

def df_2_sql(df, name):
   df.to_sql(name, engine, index=False)

df_dict = {'df_table_a': df_table_a,
           'df_table_b': df_table_b,
           'df_table_c': df_table_c}

for name, df in df_dict.items():
    df_2_sql(df, name)

Если это кажется многословным и неэффективным, обратите внимание, что вы должны были определить df_table_a, df_table_b и т. Д. Ранее в своем коде где-то . Просто используйте словарь с самого начала и присвойте ему df_dict['df_table_a'], df_dict['df_table_b'] и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...