1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
This directory contains some translated sql examples from Qt 3.x.
runform1.py, form1.ui:
A simple designer generated QDataTable. Run "pyuic form1.ui -o form1.py".
runform2.py, form2.ui:
A simple designer generated QDataBrowser. Run "pyuic form2.ui -o form2.py".
sqlcustom1.py:
QSqlForm based form with a simple custom editor forcing all input to
be uppercase
sqltable4.py:
Custom QDataTable with reimplemented paintField method, combined with
a QComboBox based custom field editor (StatusPicker), gathering its
items from a different table (status) and a calculated column (monsalary).
Note, that QSqlEditorFactory based field editors are somewhat restricted,
because Qt's Q_PROPERTY feature isn't supported, yet. I've circumvented
this limitation by choosing the status table ids corresponding to the
index in the QComboBox.
sqlsubclass5.py:
Similar to the former, and even more deviated from its qt ancestor,
because the sense escaped me. This could be related to the different
database layout needed for MySQL (Trolltech used PostgreSQL sequences,
while we're using the simpler, but less powerful auto_increment here).
If you enter and invalid date (e.g. day: 0) in the Paid column, it is
shown as "not yet", but produces some qt warnings.
runsqlex.py, sqlex.ui, sqlex.ui.h, connect.ui, connect.ui.h:
This one is a most advanced example, showing the use of a QSqlCursor
driven by QSqlQuery and iterating through database tables and fields.
Definitely worth a look.
Unfortunately you will have to make sure that these prerequisites are met
before trying the examples:
- Install MySQL or PostgreSQL and any development packages
- Create a database user with sufficient rights
- Create the testdb database
- For MySQL, run: mysql -u user -p password < testdb_mysql.sql
- For PostgreSQL, run: psql -U user template1 -f testdb_pg.sql
- Build Qt with the mysql and/or psql modules activated.
Now you should be ready for the fun part. You can run dbconnect.py from
a command line and try to connect to the database. If all went well,
'ok' should be printed after pressing OK. If you don't want to enter all
your data over and over again, create a file named local_dbpar.py here,
with the following keys (with your own data, of course):
DB_HOSTNAMES = ["localhost"]
DB_DATABASES = ["testdb"]
DB_USERNAME = "name"
DB_PASSWORD = "pass"
The dbconnect.py script is generated from dbconnect.ui, which was created
with qt's designer. You can find it also in Boudewijn Rempt's book
"GUI Programming with Python, using the Qt Toolkit". Although you won't find
the SQL widgets discussed there, for the simple reason of the book being
written before they appeared, it is a valuable source for anybody new in
this area.
Please direct any comments, patches and questions to <pykde@mats.gmd.de>.
Good luck
Hans-Peter Jansen <hpj@urpla.net>
|