author | Sylvain Thénault <sylvain.thenault@logilab.fr> |
Wed, 03 Feb 2010 18:44:24 +0100 | |
changeset 4437 | 21f2e01fdd6a |
parent 4430 | 0b6a069eb29e |
permissions | -rw-r--r-- |
4430
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
1 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
2 |
.. _Getting Data: |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
3 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
4 |
Getting Data |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
5 |
------------ |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
6 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
7 |
You might have spotted this in the explanations about the views, to |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
8 |
get data, when not using a toplevel method, you will execute an RQL |
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4430
diff
changeset
|
9 |
query over the._cwuest. For more details about RQL, head out to the |
4430
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
10 |
`RQL chapter` |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
11 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
12 |
Basic cases |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
13 |
``````````` |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
14 |
In a similiar way that you might be used to in SQL, to obtain data |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
15 |
from the RQL backend, you will execute an RQL command and obtain a |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
16 |
resultset :: |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
17 |
|
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4430
diff
changeset
|
18 |
rset = self._cw.execute(rql_command) |
4430
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
19 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
20 |
Then, you can use the data from the rset. |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
21 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
22 |
XXX complete section with examples |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
23 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
24 |
Use of the cache for RQL execution |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
25 |
`````````````````````````````````` |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
26 |
Let's say you want to get T which is in configuration C, this translates to :: |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
27 |
|
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4430
diff
changeset
|
28 |
self._cw.execute('Any T WHERE T in_conf C, C eid "%s"' % entity.eid) |
4430
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
29 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
30 |
But it can also be written in a syntax that will benefit from the use |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
31 |
of a cache on the RQL server side. :: |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
32 |
|
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4430
diff
changeset
|
33 |
self._cw.execute('Any T WHERE T in_conf C, C eid %(x)s', {'x': entity.eid}, 'x') |
4430
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
34 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
35 |
The syntax tree is build once for the "generic" RQL and can be re-used |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
36 |
with a number of different eid. Alternativelly, some of the common |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
37 |
data related to an entity can be obtained from the top-level |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
38 |
`entity.related()` method. The above would then be translated to :: |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
39 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
40 |
entity.related('in_conf', 'object') |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
41 |
|
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
42 |
The `related()` method makes extensive use of the cache mechanisms so |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
43 |
you don't have to worry about them. Additionnaly this use will get you |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
44 |
commonly used attributes that you will be able to use in your view |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
45 |
generation without having to ask the data backend. |
0b6a069eb29e
le patch added_tips a été importé
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff
changeset
|
46 |