基本上,我的代码看起来像这样,并带有一些日志记录:
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']
..和一个需要两个参数的函数,但感觉不正确或不明智。我究竟做错了什么?
答案 0 :(得分:3)
将变量名转换为字符串不是一个好主意。如果需要此功能,请构造字典并将键值对输入到函数中:
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']
等。