How many rows are you fetching, and how many columns in each row?

On Thu, Jun 9, 2022 at 8:37 AM Trainer Go <maegoerl...@gmail.com> wrote:

> Hello Jonathan,
>
> i already executed the query without using pandas in my programm
>
> query = "SELECT"
> for row in conn.execute(query).fetchall():
>     pass
>
> the result was the same runtime with pandas.
>
> So this cant be the problem. I think so.
>
> Greetings Manuel
>
> Jonathan Vanasco schrieb am Mittwoch, 8. Juni 2022 um 17:28:01 UTC+2:
>
>> When you select in the database ui tool, you are just displaying raw data.
>>
>> When you select within your code snippets above, Python is creating
>> pandas' DataFrame objects for the results.
>>
>> These two concepts are not comparable at all.  Converting the SQL data to
>> Python data structures in Pandas (and SQLAlchemy's ORM) is a lot of
>> overhead - and that grows with the result size.
>>
>> You can use memory and code profiling tools to explore this and see where
>> the issues are. The best approach is what Philip suggested above though,
>> and not use pandas, so you can see how Python/SqlAlchemy handles the raw
>> data.
>>
>>
>>
>>
>>
>> On Wednesday, June 8, 2022 at 9:28:38 AM UTC-4 Trainer Go wrote:
>>
>>> Hello Phil,
>>>
>>> i tested both and without printing the result.
>>>
>>> table_df = pd.read_sql_query(''SELECT, engine)
>>> #print(table_df)
>>> #query = "SELECT"
>>> #for row in conn.execute(query).fetchall():
>>> #    pass
>>>
>>>
>>> both have nearly the same runtime. So this is not my problem. And yes,
>>> they are the same queries cause i copy pasted the select from my DBUI where
>>> is tested first the results and the runtime and i expected the same runtime
>>> in my program but no ;)
>>>
>>> Greeting Manuel
>>>
>>> Philip Semanchuk schrieb am Mittwoch, 8. Juni 2022 um 15:04:08 UTC+2:
>>>
>>>>
>>>>
>>>> > On Jun 8, 2022, at 8:29 AM, Trainer Go <maego...@gmail.com> wrote:
>>>> >
>>>> > When im using pandas with pd.read_sql_query()
>>>> > with chunksize to minimiza the memory usage there is no difference
>>>> between both runtimes..
>>>>
>>>> Do you know that, or is that speculation?
>>>>
>>>> >
>>>> > table_df = pd.read_sql_query('''select , engine, chunksize = 30000)
>>>> >
>>>> > for df in table_df:
>>>> > print(df)
>>>> >
>>>> > the runtime is nearly the same like 5 minutes
>>>>
>>>> Printing to the screen also takes time, and your terminal probably
>>>> buffers the results, which requires memory allocation. I’m not saying this
>>>> is your problem (it probably isn’t), but your test still involves pandas
>>>> and your terminal, both of which cloud the issue. You would benefit from
>>>> simplifying your tests.
>>>>
>>>> Did you try this suggestion from my previous email?
>>>>
>>>>
>>>> > for row in conn.execute(my_query).fetchall():
>>>> > pass
>>>>
>>>> Also, are you 100% sure you’re executing the same query from SQLAlchemy
>>>> that you’re pasting into your DB UI?
>>>>
>>>> Cheers
>>>> Philip
>>>>
>>>>
>>>>
>>>> >
>>>> >
>>>> >
>>>> > #print(table_df) result: #generator object
>>>> SQLDatabase._query_iterator at 0x0DC69C30>
>>>> > I dont know if the query will be triggered by using print(table_df)
>>>> the result is generator object SQLDatabase._query_iterator at 0x0DC69C30>
>>>> >
>>>> > but the runtime is 6 seconds like in the DBUI im using.
>>>> >
>>>> > I have no clue what to do.
>>>> >
>>>> > Greetings Manuel
>>>> >
>>>> > Trainer Go schrieb am Mittwoch, 8. Juni 2022 um 09:27:04 UTC+2:
>>>> > thank you Philip,
>>>> >
>>>> > I will test it today.
>>>> >
>>>> >
>>>> > Greetings Manuel
>>>> >
>>>> > Philip Semanchuk schrieb am Dienstag, 7. Juni 2022 um 17:13:28 UTC+2:
>>>> >
>>>> >
>>>> > > On Jun 7, 2022, at 5:46 AM, Trainer Go <maego...@gmail.com> wrote:
>>>> > >
>>>> > > Hello guys,
>>>> > >
>>>> > > Im executing 2 queries in my python program with sqlalchemy using
>>>> the pyodbc driver.
>>>> > > The database is a Adaptive SQL Anywhere Version 7 32 Bit.
>>>> > >
>>>> > > When im executing the queries in a DB UI it takes 5-6 seconds for
>>>> both together and when im using the same queries in my python programm it
>>>> takes 5-6 minutes instead of 6 seconds. What im doing wrong? Im new at
>>>> this.
>>>> >
>>>> > To start, debug one query at a time, not two.
>>>> >
>>>> > Second, when you test a query in your DB UI, you’re probably already
>>>> connected to the database. Your Python program has to make the connection —
>>>> that’s an extra step, and it might be slow. If you step through the Python
>>>> program in the debugger, you can execute one statement at a time (the
>>>> connection and the query) to understand how long each step takes. That will
>>>> help to isolate the problem.
>>>> >
>>>> > Third, keep in mind that receiving results takes time too. If your DB
>>>> UI is written in C or some other language that allocates memory very
>>>> efficiently, it might be a lot faster than building a Pandas dataframe.
>>>> >
>>>> > You might want to eliminate Pandas entirely so you don’t have to
>>>> question whether or not that’s the source of your slowdown. You could do
>>>> this instead -
>>>> >
>>>> > for row in conn.execute(my_query).fetchall():
>>>> > pass
>>>> >
>>>> > That will force your Python program to iterate over the result set
>>>> without being forced to allocate memory for all the results.
>>>> >
>>>> > Hope this helps
>>>> > Philip
>>>>
>>>> --
> SQLAlchemy -
> The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full
> description.
> ---
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sqlalchemy/4fff08bd-a625-4094-8a02-ed3300887f75n%40googlegroups.com
> <https://groups.google.com/d/msgid/sqlalchemy/4fff08bd-a625-4094-8a02-ed3300887f75n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/CAFHwexc%2BPASH%3De5sZHnR3ffrosJ39VM4kQdF3v-JT%3DDrA8VmUQ%40mail.gmail.com.

Reply via email to