SQL Alchemy timing out when executing large query





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







0















I have a large query to execute through SQL Alchemy which has approximately 2.5 million rows. It's connecting to a MySQL database. When I do:



transactions = Transaction.query.all()


It eventually times out around ten minutes. And gets this error: sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')



I've tried setting different parameters when doing create_engine like:



create_engine(connect_args={'connect_timeout': 30})


What do I need to change so the query will not timeout?



I would also be fine if there is a way to paginate the results and go through them that way.










share|improve this question




















  • 1





    There is a page in the MySQL docs that might help you with debugging.

    – SuperShoot
    Nov 23 '18 at 21:21






  • 1





    Also this answer covers pagination.

    – SuperShoot
    Nov 23 '18 at 21:23


















0















I have a large query to execute through SQL Alchemy which has approximately 2.5 million rows. It's connecting to a MySQL database. When I do:



transactions = Transaction.query.all()


It eventually times out around ten minutes. And gets this error: sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')



I've tried setting different parameters when doing create_engine like:



create_engine(connect_args={'connect_timeout': 30})


What do I need to change so the query will not timeout?



I would also be fine if there is a way to paginate the results and go through them that way.










share|improve this question




















  • 1





    There is a page in the MySQL docs that might help you with debugging.

    – SuperShoot
    Nov 23 '18 at 21:21






  • 1





    Also this answer covers pagination.

    – SuperShoot
    Nov 23 '18 at 21:23














0












0








0








I have a large query to execute through SQL Alchemy which has approximately 2.5 million rows. It's connecting to a MySQL database. When I do:



transactions = Transaction.query.all()


It eventually times out around ten minutes. And gets this error: sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')



I've tried setting different parameters when doing create_engine like:



create_engine(connect_args={'connect_timeout': 30})


What do I need to change so the query will not timeout?



I would also be fine if there is a way to paginate the results and go through them that way.










share|improve this question
















I have a large query to execute through SQL Alchemy which has approximately 2.5 million rows. It's connecting to a MySQL database. When I do:



transactions = Transaction.query.all()


It eventually times out around ten minutes. And gets this error: sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')



I've tried setting different parameters when doing create_engine like:



create_engine(connect_args={'connect_timeout': 30})


What do I need to change so the query will not timeout?



I would also be fine if there is a way to paginate the results and go through them that way.







mysql sqlalchemy






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 14:34







William Ross

















asked Nov 23 '18 at 14:24









William RossWilliam Ross

86321141




86321141








  • 1





    There is a page in the MySQL docs that might help you with debugging.

    – SuperShoot
    Nov 23 '18 at 21:21






  • 1





    Also this answer covers pagination.

    – SuperShoot
    Nov 23 '18 at 21:23














  • 1





    There is a page in the MySQL docs that might help you with debugging.

    – SuperShoot
    Nov 23 '18 at 21:21






  • 1





    Also this answer covers pagination.

    – SuperShoot
    Nov 23 '18 at 21:23








1




1





There is a page in the MySQL docs that might help you with debugging.

– SuperShoot
Nov 23 '18 at 21:21





There is a page in the MySQL docs that might help you with debugging.

– SuperShoot
Nov 23 '18 at 21:21




1




1





Also this answer covers pagination.

– SuperShoot
Nov 23 '18 at 21:23





Also this answer covers pagination.

– SuperShoot
Nov 23 '18 at 21:23












1 Answer
1






active

oldest

votes


















0














Solved by pagination:



    page_size = 10000  # get x number of items at a time
step = 0
while True:
start, stop = page_size * step, page_size * (step+1)
transactions = sql_session.query(Transaction).slice(start, stop).all()
if transactions is None:
break
for t in transactions:
f.write(str(t))
f.write('n')
if len(transactions) < page_size:
break
step += 1
f.close()





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%2f53448440%2fsql-alchemy-timing-out-when-executing-large-query%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









    0














    Solved by pagination:



        page_size = 10000  # get x number of items at a time
    step = 0
    while True:
    start, stop = page_size * step, page_size * (step+1)
    transactions = sql_session.query(Transaction).slice(start, stop).all()
    if transactions is None:
    break
    for t in transactions:
    f.write(str(t))
    f.write('n')
    if len(transactions) < page_size:
    break
    step += 1
    f.close()





    share|improve this answer




























      0














      Solved by pagination:



          page_size = 10000  # get x number of items at a time
      step = 0
      while True:
      start, stop = page_size * step, page_size * (step+1)
      transactions = sql_session.query(Transaction).slice(start, stop).all()
      if transactions is None:
      break
      for t in transactions:
      f.write(str(t))
      f.write('n')
      if len(transactions) < page_size:
      break
      step += 1
      f.close()





      share|improve this answer


























        0












        0








        0







        Solved by pagination:



            page_size = 10000  # get x number of items at a time
        step = 0
        while True:
        start, stop = page_size * step, page_size * (step+1)
        transactions = sql_session.query(Transaction).slice(start, stop).all()
        if transactions is None:
        break
        for t in transactions:
        f.write(str(t))
        f.write('n')
        if len(transactions) < page_size:
        break
        step += 1
        f.close()





        share|improve this answer













        Solved by pagination:



            page_size = 10000  # get x number of items at a time
        step = 0
        while True:
        start, stop = page_size * step, page_size * (step+1)
        transactions = sql_session.query(Transaction).slice(start, stop).all()
        if transactions is None:
        break
        for t in transactions:
        f.write(str(t))
        f.write('n')
        if len(transactions) < page_size:
        break
        step += 1
        f.close()






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 29 '18 at 15:02









        William RossWilliam Ross

        86321141




        86321141
































            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%2f53448440%2fsql-alchemy-timing-out-when-executing-large-query%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

            Paul Cézanne

            UIScrollView CustomStickyHeader Resize height generates problems when scroll is too fast

            Angular material date-picker (MatDatepicker) auto completes the date on focus out