How to use a function attribute as python object as well as string



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








3















Basically my code looks like this surrounded by some logging:



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


What I would like to do is to wrap it into a function and use df_name twice:



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)


...I've expected f'df' to work, but it sadly doesn't. I want to use df_list as as pandas objects as well as part of the table name in the to_sql() function.



I've already tried to use two lists



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


..and a function which expects two arguments, but it doesn't feel right or smart. What am I doing wrong?










share|improve this question
























  • You may find this useful.

    – Shayn
    Nov 15 '18 at 15:31

















3















Basically my code looks like this surrounded by some logging:



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


What I would like to do is to wrap it into a function and use df_name twice:



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)


...I've expected f'df' to work, but it sadly doesn't. I want to use df_list as as pandas objects as well as part of the table name in the to_sql() function.



I've already tried to use two lists



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


..and a function which expects two arguments, but it doesn't feel right or smart. What am I doing wrong?










share|improve this question
























  • You may find this useful.

    – Shayn
    Nov 15 '18 at 15:31













3












3








3








Basically my code looks like this surrounded by some logging:



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


What I would like to do is to wrap it into a function and use df_name twice:



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)


...I've expected f'df' to work, but it sadly doesn't. I want to use df_list as as pandas objects as well as part of the table name in the to_sql() function.



I've already tried to use two lists



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


..and a function which expects two arguments, but it doesn't feel right or smart. What am I doing wrong?










share|improve this question
















Basically my code looks like this surrounded by some logging:



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


What I would like to do is to wrap it into a function and use df_name twice:



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)


...I've expected f'df' to work, but it sadly doesn't. I want to use df_list as as pandas objects as well as part of the table name in the to_sql() function.



I've already tried to use two lists



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


..and a function which expects two arguments, but it doesn't feel right or smart. What am I doing wrong?







python python-3.x pandas






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 15 '18 at 14:40









jpp

103k2167117




103k2167117










asked Nov 15 '18 at 13:47









ChristianChristian

649




649












  • You may find this useful.

    – Shayn
    Nov 15 '18 at 15:31

















  • You may find this useful.

    – Shayn
    Nov 15 '18 at 15:31
















You may find this useful.

– Shayn
Nov 15 '18 at 15:31





You may find this useful.

– Shayn
Nov 15 '18 at 15:31












1 Answer
1






active

oldest

votes


















3














Use a dictionary



It's not a good idea to convert variable names to strings. If you need this functionality, construct a dictionary and feed key-value pairs to your function:



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)


If this seems verbose and inefficient, note you must have defined df_table_a, df_table_b, etc earlier in your code somewhere. Just use a dictionary from the very beginning and assign to df_dict['df_table_a'], df_dict['df_table_b'], etc.






share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53320890%2fhow-to-use-a-function-attribute-as-python-object-as-well-as-string%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    Use a dictionary



    It's not a good idea to convert variable names to strings. If you need this functionality, construct a dictionary and feed key-value pairs to your function:



    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)


    If this seems verbose and inefficient, note you must have defined df_table_a, df_table_b, etc earlier in your code somewhere. Just use a dictionary from the very beginning and assign to df_dict['df_table_a'], df_dict['df_table_b'], etc.






    share|improve this answer





























      3














      Use a dictionary



      It's not a good idea to convert variable names to strings. If you need this functionality, construct a dictionary and feed key-value pairs to your function:



      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)


      If this seems verbose and inefficient, note you must have defined df_table_a, df_table_b, etc earlier in your code somewhere. Just use a dictionary from the very beginning and assign to df_dict['df_table_a'], df_dict['df_table_b'], etc.






      share|improve this answer



























        3












        3








        3







        Use a dictionary



        It's not a good idea to convert variable names to strings. If you need this functionality, construct a dictionary and feed key-value pairs to your function:



        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)


        If this seems verbose and inefficient, note you must have defined df_table_a, df_table_b, etc earlier in your code somewhere. Just use a dictionary from the very beginning and assign to df_dict['df_table_a'], df_dict['df_table_b'], etc.






        share|improve this answer















        Use a dictionary



        It's not a good idea to convert variable names to strings. If you need this functionality, construct a dictionary and feed key-value pairs to your function:



        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)


        If this seems verbose and inefficient, note you must have defined df_table_a, df_table_b, etc earlier in your code somewhere. Just use a dictionary from the very beginning and assign to df_dict['df_table_a'], df_dict['df_table_b'], etc.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 15 '18 at 15:03

























        answered Nov 15 '18 at 14:40









        jppjpp

        103k2167117




        103k2167117





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53320890%2fhow-to-use-a-function-attribute-as-python-object-as-well-as-string%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

            Syphilis

            Darth Vader #20