Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2021 - online Python 3 training - see ((here)).

Our plans were to retire in summer 2020 and see the world, but Coronavirus has lead us into a lot of lockdown programming in Python 3 and PHP 7.
We can now offer tailored online training - small groups, real tutors - works really well for groups of 4 to 14 delegates. Anywhere in the world; course language English.

Please ask about private 'maintenance' training for Python 2, Tcl, Perl, PHP, Lua, etc.
Model - View - Controller demo, Sqlite - Python 3 - Qt4

The Model - View - Controller approach to application design keeps the Graphic User Interface (the view) separate from the database (the model), with the controller in between the two, describing how the data is displayed, and how changes to the data are saved away in the database. By separating the elements in this way, extra displays can be added and removed, and the look and feel can be changed, without effecting the underlying data structure. And algorithms that deal with the data can be amended (and re-used away from the GUI) without effecting the GUIs.

It's a grand theory ... but do I have a small, practical first example in [LANGUAGE] using the [GUINAME] GUI and the [DATABASE] database? That's a question I'm often asked ... and today I put together such an example where the answers were:
  • Python 3 for the language
  • Qt4 (via PyQt) for the GUI
  • SQlite for the database.

This is what the application looks like when it's run - the view. It's displaying the list of hotel names from the database - the model - through a piece of logic which extracts each hotel via a hotel object and converts it into the string to be displayed - the controller.


There are four files in the main application - there's [model.py] which fetches all the hotel objects from the SQlite database. There's [tourist.py] which defines the hotel objects in the model. There's the controller which generates the list for display at [accomlist.py], and there's the view which is at [ticfull.py].

You'll find two more files associated with this demonstration - there's a second (simpler) view to illustrate how it broadens out to show the model in different ways - that's at [tic_view.py] and there's [sqlite.py] which is a separate program to populate the database.


(written 2010-04-29)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y206 - Python and the Qt GUI
  [1036] Python Qt, wX, TkInter, and Jython - training?? - (2007-01-16)
  [2744] PyQt (Python and Qt) and wxPython - GUI comparison - (2010-04-28)

Y115 - Additional Python Facilities
  [183] The elegance of Python - (2005-01-19)
  [208] Examples - Gadfly, NI Number, and Tcl to C interface - (2005-02-10)
  [239] What and why for the epoch - (2005-03-08)
  [463] Splitting the difference - (2005-10-13)
  [663] Python to MySQL - (2006-03-31)
  [672] Keeping your regular expressions simple - (2006-04-05)
  [753] Python 3000 - the next generation - (2006-06-09)
  [901] Python - listing out the contents of all variables - (2006-10-21)
  [1043] Sending an email from Python - (2007-01-18)
  [1136] Buffering output - why it is done and issues raised in Tcl, Perl, Python and PHP - (2007-04-06)
  [1149] Turning objects into something you can store - Pickling (Python) - (2007-04-15)
  [1305] Regular expressions made easy - building from components - (2007-08-16)
  [1336] Ignore case in Regular Expression - (2007-09-08)
  [1337] A series of tyre damages - (2007-09-08)
  [1876] Python Regular Expressions - (2008-11-08)
  [2407] Testing code in Python - doctest, unittest and others - (2009-09-16)
  [2435] Serialization - storing and reloading objects - (2009-10-04)
  [2462] Python - how it saves on compile time - (2009-10-20)
  [2655] Python - what is going on around me? - (2010-02-28)
  [2721] Regular Expressions in Python - (2010-04-14)
  [2745] Connecting Python to sqlite and MySQL databases - (2010-04-28)
  [2764] Python decorators - your own, staticmethod and classmethod - (2010-05-14)
  [2765] Running operating system commands from your Python program - (2010-05-14)
  [2786] Factory methods and SqLite in use in a Python teaching example - (2010-05-29)
  [2790] Joining a MySQL table from within a Python program - (2010-06-02)
  [3089] Python regular expressions - repeating, splitting, lookahead and lookbehind - (2010-12-17)
  [3442] A demonstration of how many Python facilities work together - (2011-09-16)
  [3469] Teaching dilemma - old tricks and techniques, or recent enhancements? - (2011-10-08)
  [4085] JSON from Python - first principles, easy example - (2013-05-13)
  [4211] Handling JSON in Python (and a csv, marshall and pickle comparison) - (2013-11-16)
  [4298] Python - an interesting application - (2014-09-18)
  [4439] Json is the new marshall, pickle and cPickle / Python - (2015-02-22)
  [4451] Running an operating system command from your Python program - the new way with the subprocess module - (2015-03-06)
  [4536] Json load from URL, recursive display, Python 3.4 - (2015-10-14)
  [4593] Command line parameter handling in Python via the argparse module - (2015-12-08)
  [4709] Some gems from Intermediate Python - (2016-10-30)

Y113 - Python and SQL databases
  [3136] A framework with python - Django - first steps - (2011-01-17)
  [3139] Steering our Python courses towards wxPython, SQLite and Django - (2011-01-19)
  [4024] SQL databases from Python - an SQLite example - (2013-03-02)
  [4086] Cacheing class for Python - using a local SQLite database as a key/value store - (2013-05-14)
  [4436] Accessing a MySQL database from Python with mysql.connector - (2015-02-21)
  [4445] Graphing presentations in Python - huge data, numpy and matplotlib - (2015-02-28)
  [4535] SQLAlchemy - first examples with a Python Object Relationship Mapping system - (2015-10-14)
  [4537] example of SQLite using a local database file through SQLalchemy - (2015-10-14)

S200 - MySQL - SQLite
  [2561] The future of MySQL - (2010-01-03)
  [3099] Perl - database access - DBD, DBI and DBIx modules - (2010-12-22)
  [3269] Files or Databases? MySQL, SQLite, or Oracle? - (2011-04-28)
  [4006] Ruby / SQLite3 example program, showing JOIN v LEFT JOIN - (2013-02-16)
  [4007] Which database should I use? MySQL v SQLite - (2013-02-16)

Q910 - Object Orientation and General technical topics - GUI principles
  [3081] wxPython - simple example to add GUI to a server log file analysis - (2010-12-08)
  [4258] Keeping you Tkinter display up to date while monitoring - (2014-04-06)
  [4589] Principles or a GUI and their practical application using wxPthon - (2015-11-30)


Back to
Connecting Python to sqlite and MySQL databases
Previous and next
or
Horse's mouth home
Forward to
Containment, Associative Objects, Inheritance, packages and modules
Some other Articles
Views of Wessex
Delegate Question - defining MySQL table relationships as you create the tables
Monitoring the success and traffic of your web site
Containment, Associative Objects, Inheritance, packages and modules
Model - View - Controller demo, Sqlite - Python 3 - Qt4
Public Open Source Training Courses running this summer and autumn in Melksham
A simple server benchmark script
What is a factory?
4759 posts, page by page
Link to page ... 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, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2021: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/2746_Mod ... 3-Qt4.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb