[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    [PyQt] Selection query in relational table model
From:       Jorge Tornero - Listas <jtorlistas () gmail ! com>
Date:       2012-10-30 9:02:07
Message-ID: 508F978F.9050500 () gmail ! com
[Download RAW message or body]

Hello,

I am trying to develop a small application where a database (PostgreSQL) =

is involved.

I've created a custom table view which several custom delegates that =

works well for me. The table receives a QSqlRelationalTable Model and is =

able to remove records and edit them with a popup dialog which shows =

line editors and/or combo selectors depending on the underlying database =

field type. I had to implement this because my database tables have =

primary keys than contains relations to another tables, thus direct =

editing is not possible. I am using QSqlRelationalTableModel just for =

foreign key resolution, that is, mainly for display purposes.

But now I want to to use two of that table view together. Both table =

views will use the same table of the database, say we have a table like:

survey PK
haul PK
species PK (FK with another table species, for instance)
length_class
number
total weight

say we have several  records in the table:

    survey    |haul|species|length|number|total_weight
-------------+----+-------+------+------+-------------
BOCADEVA0711 |  1 | 10156 | 10.5 |  21  |    56.56
BOCADEVA0711 |  1 | 10156 | 11.0 |  33  |    56.56
BOCADEVA0711 |  1 | 10156 | 11.5 |  11  |    56.56
BOCADEVA0711 |  1 | 10152 | 21.5 |  99  |   123.46
BOCADEVA0711 |  1 | 10152 | 22.0 |  10  |   123.46
BOCADEVA0711 |  1 | 10152 | 22.5 |   9  |   123.46
BOCADEVA0711 |  1 | 10288 | 10.5 |  18  |    60.44
BOCADEVA0711 |  1 | 10288 | 11.5 |  33  |   100.01

With my custom view there is no problem when I show the data (even if i =

need to hide columns, etc.)

But the problem comes when the first view should show aggregated data, =

for instance just survey, haul, species and total weight, like

    survey    |haul|species|total_weight
-------------+----+-------+-------------
BOCADEVA0711 |  1 | 10156 |    56.56
BOCADEVA0711 |  1 | 10152 |   123.46
BOCADEVA0711 |  1 | 10288 |    60.44

I will obtain this results in sql with just:

SELECT DISTINCT survey,haul,species,total_weigth FROM the_table;
or
SELECT survey,haul,species,total_weigth FROM the_table GROUP BY 1,2,3,4;

Unfortunately I have not been succesful trying to do tha with =

QSqlRelationalTableModel. I don't know how to set the model's query. =

I've tried with setQuery() (I am aware of the documentarion advice about =

don't use setQuery, but I haven=A1t another choice AFAIK) but two things =

happen:

- I get foreign keys unresolved
- View resets and the set query is sort of "forgotten" and I get the =

whole table again.

Do you have any suggestions? Saint Google hasn't offered much help so far.

Thank you very much for your responses.

Best regards,

Jorge Tornero
Instituto Espa=F1ol de Oceanograf=EDa
Centro Oceanogr=E1fico de C=E1diz

www.ieo.es

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic