summaryrefslogtreecommitdiffstats
path: root/examples3/SQL/README
blob: 3272c19f12f69a5144cefd5cd039b28f29abf8c4 (plain)
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 TQt 3.x.

runform1.py, form1.ui:

  A simple designer generated TQDataTable. Run "pyuic form1.ui -o form1.py".

runform2.py, form2.ui:

  A simple designer generated TQDataBrowser. Run "pyuic form2.ui -o form2.py".

sqlcustom1.py: 

  TQSqlForm based form with a simple custom editor forcing all input to
  be uppercase

sqltable4.py:

  Custom TQDataTable with reimplemented paintField method, combined with
  a TQComboBox based custom field editor (StatusPicker), gathering its
  items from a different table (status) and a calculated column (monsalary).
  Note, that TQSqlEditorFactory based field editors are somewhat restricted,
  because TQt's TQ_PROPERTY feature isn't supported, yet. I've circumvented
  this limitation by choosing the status table ids corresponding to the
  index in the TQComboBox.

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 TQSqlCursor
  driven by TQSqlQuery and iterating through database tables and fields.
  Definitely worth a look.

Unfortunately you will have to make sure that these preretquisites 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 TQt 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 TQt 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 <pytde@mats.gmd.de>.

Good luck

Hans-Peter Jansen <hpj@urpla.net>