[PyQt] QSqlDatabase connection parameters

Scott Frankel frankel at circlesfx.com
Fri Mar 19 20:37:35 GMT 2010


On Mar 19, 2010, at 12:59 PM, Matt Newell wrote:

> On Friday 19 March 2010 12:06:12 Scott Frankel wrote:
>> Hi all,
>>
>> Would anyone have any suggestions for improving QSqlDatabase PSQL
>> connection performance?
>>
>>
>> The Qt docs refer to PSQL connection options and demonstrate the
>> "requiressl=1" example.  Are there other options that can be set?
>> (eg:  the docs' PostgreSQL "options" bullet point)  Google searches
>> are coming up short.
>>
>> I note that my local postgresql.conf file has a "work_mem" statement.
>> (Usage:  work_mem = 1MB)  That could be germane, but including the
>> term in my setConnectOptions() method (as part of a semi-colon
>> separated list) yields PSQL errors.
>>
>> I've optimized my working code further.  Running from a local data
>> set, launch times are down to 4 seconds.  Running from an identical
>> data set hosted remotely, my application launches in 40+ seconds!
>>
>> Thanks in advance!
>> Scott
>>
> I always disable prepared connection inside the qsqlpsql driver,  
> just add a
> return false; line after the PreparedQueries case statement in the
> hasFeatures function(that's all from memory, names may be off).   
> This will
> only help if you are using QSqlQuery.prepare, which i use for the api
> convenience, not because i actually want prepared queries.  This  
> will reduce
> the roundtrip count and could make a difference if roundtrip time is  
> an
> issue.

I use prepared statements sparingly and only for inserts back to the db.


> On the server you should enable logging of queries that take over a  
> certain
> amount of time.  This will help you narrow down places where you  
> need indexes
> or better designed queries.

Good idea.


> Also it's possible to use multiple connection each from it's own  
> thread.  I
> haven't done this in pyqt alone, but have done this quite a lot in c+ 
> +/qt
> apps.

My initial forays into multithreading yielded warnings about pixmaps  
when I attempted to thread form construction as a whole.  I'll look  
into threading just the data load portions.


> Other than that just reducing the total number of queries, which can  
> be done
> by more intelligent/complex queries, or by stored procedures.

Yes.  Most of my recent effort has been replacing queries with data  
model operations.


> The qsqlpsql driver is a fairly thin wrapper around psql so I don't  
> really
> think there is a lot of performance gains to be had by changing any  
> settings.

Thanks for the info!


>
> Matt
>












More information about the PyQt mailing list