<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Sat, Feb 15, 2014 at 1:42 PM, Sibylle Koczian <span dir="ltr"><<a href="mailto:nulla.epistola@web.de" target="_blank">nulla.epistola@web.de</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hello,<br>
<br>
I don't understand the error I get with the following script:<br>
<br>
#!/usr/bin/env python<br>
<br>
import sys<br>
from PyQt5 import QtCore<br>
from PyQt5 import QtSql<br>
<br>
def checkQSQLITE():<br>
    result = QtSql.QSqlDatabase.<u></u>isDriverAvailable('QSQLITE')<br>
    print("Treiber verfügbar? {}".format(result))<br>
    db = QtSql.QSqlDatabase.<u></u>addDatabase("QSQLITE")<br>
    cname = db.connectionName()<br>
    db.setDatabaseName(":memory:")<br>
    result = db.open()<br>
    print("Datenbank geöffnet? {}".format(result))<br>
    if result:<br>
        db.close()<br>
        if db.isOpen():<br>
            print("Datenbank konnte nicht geschlossen werden.")<br>
            print(db.lastError().text())<br>
        else:<br>
            print("Datenbank geschlossen.")<br>
    QtSql.QSqlDatabase.<u></u>removeDatabase(cname)<br>
<br>
def main(args):<br>
    app = QtCore.QCoreApplication(args)<br>
    checkQSQLITE()<br>
<br>
if __name__ == "__main__":<br>
    main(sys.argv)<br>
<br>
<br>
Result:<br>
<br>
Treiber verfügbar? True<br>
Datenbank geöffnet? True<br>
Datenbank geschlossen.<br>
QSqlDatabasePrivate::<u></u>removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.<br>
<br>
Why is the connection still in use after it's been closed? What should I do to put it out of use? There is no open query, because no query at all has been executed.<br>
<br>
This problem isn't new, but I found only questions (my own old one among them), no answer, at least not for PyQt.<br>
<br>
Thank you for help,<br>
Sibylle<br>
______________________________<u></u>_________________<br>
PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com" target="_blank">PyQt@riverbankcomputing.com</a><br>
<a href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt" target="_blank">http://www.riverbankcomputing.<u></u>com/mailman/listinfo/pyqt</a></blockquote><div><br></div><div>The docs for removeDatabase mention the potential issue:</div>

<div><br></div><div><div>The correct way to do it:</div><div><br></div><div>{</div><div>    QSqlDatabase db = QSqlDatabase::database("sales");</div><div>    QSqlQuery query("SELECT NAME, DOB FROM EMPLOYEES", db);</div>

<div>}</div><div>// Both "db" and "query" are destroyed because they are out of scope</div><div>QSqlDatabase::removeDatabase("sales"); // correct</div></div><div><br></div><div>How this relates to python may not be obvious if you are not familiar with c++. When I added a "del db" (before the removeDatabase call) so that QSqlDatabase is collected/destroyed, the error no longer occurred. </div>

<div><br></div><div>- Michael</div></div><br></div></div>