QMySQL Driver not load

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Locutos
User
Beiträge: 3
Registriert: Sonntag 19. April 2020, 08:36

Hallo,
ich möchte mir gern über eine PyQt6 Oberfläche, eine Mysql Datenbank anzeigen lassen.

db = QtSql.QSqlDatabase.addDatabase('QMYSQL')
db.setHostName('192.168.75.130')
db.setPort(3306)
db.setUserName('myusername')
db.setPassword('mypassword')
db.setDatabaseName('My_DB')

if not db.open():
Widgets.QMessageBox.critical(None, "Database Error", db.lastError().text())

leider bekomme ich immer folgende Fehlermeldung:
Driver not loaded

Die Lösungen, die man über Google findet, funktionieren nicht. Der Mysql-Connector ist installiert. Über einen Tip würde ich mich sehr freuen.
Mit freundlichen Grüßen
Locutos
Benutzeravatar
__blackjack__
User
Beiträge: 14132
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Die Frage ist ob da auch ein Qt-Treiber installiert und registriert ist. Was ist denn die Ausgabe von ``print(QtSql.QSqlDatabase.drivers())``?
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
Locutos
User
Beiträge: 3
Registriert: Sonntag 19. April 2020, 08:36

Hallo,
die Ausgabe ist ['QSQLITE', 'QODBC', 'QPSQL']
Sirius3
User
Beiträge: 18297
Registriert: Sonntag 21. Oktober 2012, 17:20

Also hast du kein QMySQL Plugin installiert. Die Dokumentation schreibt, wie man das Plugin baut: https://doc.qt.io/qt-6/sql-driver.html
Zum Glück gibt es Leute, die das Kompilieren für dich schon erledigt haben:
https://github.com/thecodemonkey86/qt_mysql_driver/
Locutos
User
Beiträge: 3
Registriert: Sonntag 19. April 2020, 08:36

Oh Danke, genau danach hatte ich gesucht. :) Funktioniert einwandfrei.
DL3AD
User
Beiträge: 46
Registriert: Montag 31. August 2015, 19:03

Hallo in die Runde,
habe auch ein Treiberproblem.

Code: Alles auswählen

from PySide6.QtWidgets import QMainWindow
from PySide6 import QtSql
from frm_main_ui import Ui_frm_main
from PySide6.QtCore import Qt

class FrmMain(QMainWindow, Ui_frm_main):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        # Datenbankverbindung herstellen
        #self.db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
        #self.db.setDatabaseName("Eierlog.sqlite")

        self.db = QtSql.QSqlDatabase.addDatabase("QMARIADB")
        self.db.setHostName("192.168.2.10")
        self.db.setPort(3306)
        self.db.setUserName("user")
        self.db.setPassword("Mypass")
        self.db.setDatabaseName("Eierlog")
        self.db.open()
Im Code ist nichts unterkringelt - aber in der Console gibt es folgende Fehlermeldung.

qt.sql.qsqldatabase: QSqlDatabase: can not load requested driver 'QMARIADB', available drivers: QPSQL QMARIADB QMYSQL QSQLITE QMIMER QODBC

Mit einer SQLite DB funktioniert es - was ist hier faul ?
Benutzeravatar
__blackjack__
User
Beiträge: 14132
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DL3AD: Das Qt-Plugin scheint da zu sein, dann wäre die Vermutung, dass dieser Bibliothek eine Abhängigkeit fehlt. Also die Bibliothek finden und schauen was die versucht zu laden. Welches Betriebssystem verwendest Du denn?
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
DL3AD
User
Beiträge: 46
Registriert: Montag 31. August 2015, 19:03

Debian Trixie KDE
Benutzeravatar
__blackjack__
User
Beiträge: 14132
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DL3AD: Dann müsste man die entsprechende Qt *.so-Datei für das QMYSQL-Plugin finden und mal mit ``ldd`` schauen ob da alle Abhängigkeiten erfüllt sind. Also zum Beispiel ob die libmysqlclient.so gefunden werden kann.
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
DL3AD
User
Beiträge: 46
Registriert: Montag 31. August 2015, 19:03

Ja, Danke - habe schon gefunden.
Antworten