Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 14, 2016 19:34:21

Popov
Зарегистрирован: 2016-06-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

Есть код написанный для sqlite пытаюсь применить ее для Mysql не как не хочет работать.
Вместо sqlite3 хочу переделать для PyQt
Ошибка выходит в этом месте, пишет что у query нет fetchall, Помогите переделать для PyQt

        if(len(result.fetchall()) > 0):
            print("User Found ! ")

ссылка откуда код
Пример, откуда беру код

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'login.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
from welcome import Ui_MainWindow
from signup import Ui_signUp
import sqlite3
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s
try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)
class Ui_Dialog(object):
    def showMessageBox(self,title,message):
        msgBox = QtGui.QMessageBox()
        msgBox.setIcon(QtGui.QMessageBox.Warning)
        msgBox.setWindowTitle(title)
        msgBox.setText(message)
        msgBox.setStandardButtons(QtGui.QMessageBox.Ok)
        msgBox.exec_()
    def welcomeWindowShow(self):
        self.welcomeWindow = QtGui.QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.welcomeWindow)
        self.welcomeWindow.show()
    def signUpShow(self):
        self.signUpWindow = QtGui.QDialog()
        self.ui = Ui_signUp()
        self.ui.setupUi(self.signUpWindow)
        self.signUpWindow.show()
    def loginCheck(self):
        username = self.uname_lineEdit.text()
        password = self.pass_lineEdit.text()
        connection = sqlite3.connect("login.db")
        result = connection.execute("SELECT * FROM USERS WHERE USERNAME = ? AND PASSWORD = ?",(username,password))
        if(len(result.fetchall()) > 0):
            print("User Found ! ")
            self.welcomeWindowShow()
        else:
            print("User Not Found !")
            self.showMessageBox('Warning','Invalid Username And Password')
        connection.close()
        
    def signUpCheck(self):
        print(" Sign Up Button Clicked !")
        self.signUpShow()
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(496, 265)
        self.u_name_label = QtGui.QLabel(Dialog)
        self.u_name_label.setGeometry(QtCore.QRect(150, 110, 71, 20))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(False)
        font.setWeight(50)
        self.u_name_label.setFont(font)
        self.u_name_label.setAlignment(QtCore.Qt.AlignCenter)
        self.u_name_label.setObjectName(_fromUtf8("u_name_label"))
        self.pass_label = QtGui.QLabel(Dialog)
        self.pass_label.setGeometry(QtCore.QRect(150, 150, 71, 21))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.pass_label.setFont(font)
        self.pass_label.setAlignment(QtCore.Qt.AlignCenter)
        self.pass_label.setObjectName(_fromUtf8("pass_label"))
        self.uname_lineEdit = QtGui.QLineEdit(Dialog)
        self.uname_lineEdit.setGeometry(QtCore.QRect(230, 110, 113, 20))
        self.uname_lineEdit.setObjectName(_fromUtf8("uname_lineEdit"))
        self.pass_lineEdit = QtGui.QLineEdit(Dialog)
        self.pass_lineEdit.setGeometry(QtCore.QRect(230, 150, 113, 20))
        self.pass_lineEdit.setObjectName(_fromUtf8("pass_lineEdit"))
        self.login_btn = QtGui.QPushButton(Dialog)
        self.login_btn.setGeometry(QtCore.QRect(230, 200, 51, 23))
        self.login_btn.setObjectName(_fromUtf8("login_btn"))
        ######################### Button Event ##############################3
        self.login_btn.clicked.connect(self.loginCheck)
        #####################################################################
        self.signup_btn = QtGui.QPushButton(Dialog)
        self.signup_btn.setGeometry(QtCore.QRect(290, 200, 51, 23))
        self.signup_btn.setObjectName(_fromUtf8("signup_btn"))
        ######################### Button Event ##############################3
        self.signup_btn.clicked.connect(self.signUpCheck)
        #####################################################################
        self.label = QtGui.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(190, 10, 211, 51))
        font = QtGui.QFont()
        font.setPointSize(18)
        self.label.setFont(font)
        self.label.setObjectName(_fromUtf8("label"))
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "Login Form", None))
        self.u_name_label.setText(_translate("Dialog", "USERNAME ", None))
        self.pass_label.setText(_translate("Dialog", "PASSWORD", None))
        self.login_btn.setText(_translate("Dialog", "Login", None))
        self.signup_btn.setText(_translate("Dialog", "Sign Up", None))
        self.label.setText(_translate("Dialog", "Login Form", None))
if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Dialog = QtGui.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

Офлайн

#2 Июнь 14, 2016 19:40:42

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2584
Репутация: +  60  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

Ну так покажите что вы там наворотили а мы поправим.
Ну и саму базу перенесли уже на Mysql?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Июнь 14, 2016 19:53:15

Popov
Зарегистрирован: 2016-06-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

Простите забыл свой код написать
Мой код

class Ui_login(object):
    def loginCheck(self):
        login = self.db_login.text() # Логин
        password = self.db_pass.text() # Пароль
        db = QSqlDatabase.addDatabase('QMYSQL') # Драйвер для Mysql
        db.setHostName("localhost")
        db.setUserName("root")
        db.setPassword("root")
        db.setDatabaseName("root")
        ok = db.open()
        query = QSqlQuery()
        query.prepare("SELECT * FROM users WHERE user = "+ login + " AND password = "+ password);
        if(len(query.fetchall()) > 0):
            print("User Found ! ")
            self.welcomeWindowShow()
        else:
            print("User Not Found !")
            self.showMessageBox('Warning','Invalid Username And Password')
        connection.close()
Вот тут не хочет работать выдает что у QSqlQuery нет такого аргумента

Отредактировано Popov (Июнь 15, 2016 13:44:48)

Офлайн

#4 Июнь 15, 2016 05:23:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

Во-первых, у вас лишний пробел перед ИФ, во-вторых “Вот тут не хочет работать выдает что у QSqlQuery нет такого аргумента” это - технический форум, не нужно домыслов, просто скопируйте трейсбэк ошибки и выложите.



Офлайн

#5 Июнь 15, 2016 13:44:27

Popov
Зарегистрирован: 2016-06-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

File “F:\login.py”, line 36, in loginCheck
if(len(query.fetchall()) > 0):
AttributeError: ‘QSqlQuery’ object has no attribute ‘fetchall’

Отредактировано Popov (Июнь 15, 2016 13:45:14)

Офлайн

#6 Июнь 15, 2016 16:26:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

ОК, а с чего вы взяли, что такой метод у QSqlQuery есть? Покажите пальцем в доке.



Офлайн

#7 Июнь 15, 2016 23:51:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

Qt Assistant
Navigating records is performed with the following functions:
  • previous()
  • first()
  • last()
  • seek()
  • next()



For example:
     QSqlQuery query("SELECT country FROM artist");
while (query.next()) {
QString country = query.value(0).toString();
doSomething(country);
}



Офлайн

#8 Июнь 16, 2016 08:17:16

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2584
Репутация: +  60  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

Заюзайте нормальный драйвер для мускуля - и тогда вам неприйдется сильно переписывать логику! Разве то название курсоров а так почти тоже самое и и скулайт
https://github.com/PyMySQL/PyMySQL



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#9 Июнь 16, 2016 10:08:44

Popov
Зарегистрирован: 2016-06-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

Помогите сделать цикл на подобии этого if(len(query.fetchall()) > 0):
нужно что бы цикл запроса повторялся до тех пор пока пара в таблице логин и пароль не будет найден

Офлайн

#10 Июнь 16, 2016 10:10:35

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2584
Репутация: +  60  -
Профиль   Отправить e-mail  

преобразование кода для sqlite в mysql

каким образом он будет найдет если его нет?
fetchall() вытягивает все данные по запросу(все поля)



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version