[PyQt] How to close QSqlDatabase connection?
Sibylle.Koczian at t-online.de
Wed Nov 14 15:13:43 GMT 2007
Am Montag, 12. November 2007 20:55:20 schrieb Hans-Peter Jansen:
> Am Montag, 12. November 2007 schrieb Sibylle Koczian:
> > So I looked around and saw that I had this:
> > def main(args):
> > app = QtGui.QApplication(args)
> > if not visa_conn():
> > sys.exit(1)
> > visa_mf = VisaMF()
> > visa_mf.show()
> > sys.exit(app.exec_())
> > if __name__ == '__main__':
> > main(sys.argv[1:])
> > while "cachedtable.py" has no separate main function and calls the app
> > constructor with the full list sys.argv. Doing the same in my own example
> > seems to do the trick. But why?
> I will (hopefully) leave a more satisfying answer to the experts, but
> omitting sys.argv doesn't make any sense to me anyway. Maybe the process
> name is used internally for creating the default connection name, and
> creates a None, NULL, whatever mismatch on close later in this case.
> You may want to experiment a bit with faked sys.argv args, e.g.: , [''],
> ['xxx'], and let us know about the outcome. Using a different database
> backend would also be interesting.
I did, and the content of the argument list seems to be quite unimportant:
app = QtGui.QApplication(args) with an arbitrary list "args" works without
error message - as long as I don't use a separate "main" function. That seems
to be the important difference, not the arguments to the QApplication
constructor. Which leads again to the question: why? What's wrong with such a
I will try to find out more: can I put part of the code into main(), but not
all of it? Can I use such a function, if I don't call it "main()"? And I will
certainly use another database backend (firebird), but at the moment I doubt
very much if that will make any difference. It's more interesting to try PyQt
applications not using a database with and without a separate "main()".
Dr. Sibylle Koczian
More information about the PyQt