Pyodbc -Funktion funktioniert allein, aber nicht in Pyqt6Python

Python-Programme
Anonymous
 Pyodbc -Funktion funktioniert allein, aber nicht in Pyqt6

Post by Anonymous »

Ich habe diese Pyodbc- und SQL -Alchemie -Verbindungszeichenfolge. Es funktioniert in seinem eigenen Testskript gut, aber wenn ich die gleiche Funktion in meine PYQT6 -App einbrachte, fällt es mit < /p> fehlTraceback (most recent call last):
File "[FILE PATH]", line 69, in on_login
conn = pyodbc.connect(odbc_connect)
pyodbc.Error: ('HY000', 'The driver did not supply an error!')
< /code>
Hier ist die Funktionstestfunktion: < /p>
def on_login(username, password, dsn):
odbc_connect = f"DSN={dsn};UID={username};PWD={password}"
conn = pyodbc.connect(odbc_connect)

dbms = str(conn.getinfo(pyodbc.SQL_DBMS_NAME)).lower()
engine = sa.create_engine(f"{dbms}+pyodbc://{username}:{password}@{dsn}")
with engine.connect() as connection:
df = pd.read_sql("SELECT * from sakila.Actor LIMIT 100;", connection)
print(df)
conn.close()
< /code>
Dies ist die Funktion in der Haupt -PyQT -App. Der einzige Unterschied ist die Parameter selbst anstelle des Benutzernamens, Passwort, dsn. < /P>
#LOGIN SCREEN
self.loginsubwidget = QWidget(self, toolTip = 'Login to Server')
login_layout = QVBoxLayout(self.loginsubwidget)
label = QLabel('Server Login
', self.loginsubwidget, margin = 10)
login_layout.addWidget(label)

form_layout = QFormLayout()
login_layout.addLayout(form_layout)

self.DSNcombo = QComboBox(self)
available_dsn = pyodbc.dataSources()
if available_dsn:
self.DSNcombo.addItems(available_dsn.keys())
else:
self.DSNcombo.addItems("No DSNs found")
form_layout.addRow('DSN', self.DSNcombo)

self.usernameenter = QLineEdit(self.loginsubwidget, placeholderText='username', clearButtonEnabled=True, maxLength=20)
form_layout.addRow('Username', self.usernameenter)

self.passwordenter = QLineEdit(self.loginsubwidget, placeholderText='password')
self.passwordenter.setEchoMode(QLineEdit.EchoMode.Password)
form_layout.addRow('Password', self.passwordenter)

dbconnect_button = QPushButton('Submit', self, shortcut=QKeySequence(Qt.Key.Key_Return))
login_layout.addWidget(dbconnect_button)

dbconnect_button.clicked.connect(self.on_login)

def on_login(self):
username = self.usernameenter.text()
password = self.passwordenter.text()
dsn = self.DSNcombo.currentText()

odbc_connect = f"DSN={dsn};UID={username};PWD={password}"
conn = pyodbc.connect(odbc_connect)

dbms = str(conn.getinfo(pyodbc.SQL_DBMS_NAME)).lower()
engine = sa.create_engine(f"{dbms}+pyodbc://{username}:{password}@{dsn}")
with engine.connect() as connection:

df = pd.read_sql("SELECT * from sakila.Actor LIMIT 100;", connection)
print(df)
# Close the connection
conn.close()
< /code>
Dies ist mein erstes Mal mit PYQT, und an diesem Punkt versuche ich nur, eine Verbindung zu meiner ODBC -Verbindung herzustellen, um von dort aus zu bauen. Mein Test ODBC ist eine lokale MySQL -Datenbank, wenn dies hilft, aber genau dieselbe Funktion funktioniert einwandfrei im separaten Skript außerhalb des Formulars. Ich habe Print () nach allem verwendet und es war das gleiche wie bei mir, als ich es festcodierte. Dies ist ein volles Problem zwischen Pyodbc und Pyqt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post