Приложение Pyqt6, разработанное с базой данных MySQL и разъемом MySQL и в комплекте с Pyinstaller не может открыть / сбоPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Приложение Pyqt6, разработанное с базой данных MySQL и разъемом MySQL и в комплекте с Pyinstaller не может открыть / сбо

Сообщение Anonymous »

Я создал свое приложение с помощью Pyqt6, базы данных MySQL и разъема MySQL. Я проверил подключение и привилегии пользователей, и все было в порядке. Приложение успешно взаимодействует с базой данных при запуске из кода Python с помощью CMD. Но как только приложение будет связано с использованием Pyinstaller, приложение (EXE) не может открыться. Я не могу понять, почему. Приложение CRUD также отлично работает при запуске из сценария Python. Но как только приложение будет связано с помощью Pyinstaller, приложение запускает и отображает страницу входа в систему. После ввода имени пользователя и пароля и нажатия кнопки входа в систему приложение сбои без какой -либо ошибки. Кнопка. < /p>
Вот образец кода CRUD: < /p>
import sys
import mysql.connector
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QMessageBox, QTableWidget, QTableWidgetItem, QHBoxLayout

# Create Database Connection
def create_connection():
try:
conn = mysql.connector.connect(
host="localhost",
user="crud_user",
password="12345",
database="crud_app",
port=3307
)
return conn
except mysql.connector.Error as err:
QMessageBox.critical(None, "Database Error", f"Failed to connect to database:\n{err}")
return None

# Login Page
class LoginPage(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Login")
self.setGeometry(100, 100, 300, 200)

layout = QVBoxLayout()
self.username_input = QLineEdit()
self.username_input.setPlaceholderText("Username")
self.password_input = QLineEdit()
self.password_input.setPlaceholderText("Password")
self.password_input.setEchoMode(QLineEdit.EchoMode.Password)
self.login_button = QPushButton("Login")
self.login_button.clicked.connect(self.login)

layout.addWidget(QLabel("Username:"))
layout.addWidget(self.username_input)
layout.addWidget(QLabel("Password:"))
layout.addWidget(self.password_input)
layout.addWidget(self.login_button)

self.setLayout(layout)

def login(self):
try:
username = self.username_input.text()
password = self.password_input.text()
conn = create_connection()
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE username=%s AND password=%s", (username, password))
user = cursor.fetchone()
conn.close()

if user:
self.crud_page = CRUDPage()
self.crud_page.show()
self.close()
else:
QMessageBox.warning(self, "Error", "Invalid username or password")
except Exception as err:
QMessageBox.critical(self, "Error", f"Login failed: {str(err)}")

# CRUD Page
class CRUDPage(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("CRUD App")
self.setGeometry(100, 100, 600, 400)

layout = QVBoxLayout()
self.table = QTableWidget()
self.table.setColumnCount(4)
self.table.setHorizontalHeaderLabels(["ID", "Name", "Age", "City"])
layout.addWidget(self.table)

self.load_data()

self.name_input = QLineEdit()
self.name_input.setPlaceholderText("Name")
self.age_input = QLineEdit()
self.age_input.setPlaceholderText("Age")
self.city_input = QLineEdit()
self.city_input.setPlaceholderText("City")

self.add_button = QPushButton("Add")
self.add_button.clicked.connect(self.add_record)
self.delete_button = QPushButton("Delete")
self.delete_button.clicked.connect(self.delete_record)

form_layout = QHBoxLayout()
form_layout.addWidget(self.name_input)
form_layout.addWidget(self.age_input)
form_layout.addWidget(self.city_input)
form_layout.addWidget(self.add_button)
form_layout.addWidget(self.delete_button)

layout.addLayout(form_layout)
self.setLayout(layout)

def load_data(self):
conn = create_connection()
cursor = conn.cursor()
cursor.execute("SELECT * FROM records")
rows = cursor.fetchall()
conn.close()

self.table.setRowCount(len(rows))
for row_idx, row_data in enumerate(rows):
for col_idx, data in enumerate(row_data):
self.table.setItem(row_idx, col_idx, QTableWidgetItem(str(data)))

def add_record(self):
name = self.name_input.text()
age = self.age_input.text()
city = self.city_input.text()
if not name or not age:
QMessageBox.warning(self, "Input Error", "Please enter name and age")
return

conn = create_connection()
cursor = conn.cursor()
cursor.execute("INSERT INTO records (name, age, city) VALUES (%s, %s, %s)", (name, age, city))
conn.commit()
conn.close()
self.load_data()

def delete_record(self):
selected = self.table.currentRow()
if selected == -1:
QMessageBox.warning(self, "Selection Error", "Please select a row to delete")
return

record_id = self.table.item(selected, 0).text()
conn = create_connection()
cursor = conn.cursor()
cursor.execute("DELETE FROM records WHERE id = %s", (record_id,))
conn.commit()
conn.close()
self.load_data()

# Run the App
app = QApplication(sys.argv)
login = LoginPage()
login.show()
sys.exit(app.exec())


Подробнее здесь: https://stackoverflow.com/questions/794 ... -with-pyin
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Приложение Pyqt6, разработанное с базой данных MySQL и разъемом MySQL и в комплекте с Pyinstaller не может открыть / сбо
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Невозможно найти в комплекте в комплекте версию Java на Flutter
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Невозможно найти в комплекте в комплекте версию Java на Flutter
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Проблема с разъемом MySQL C ++ (v9.2): нарушение доступа в vcruntime140.dll [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Поделитесь приложением Python в комплекте с помощью PYInstaller
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»