首页 文章

可以用sqlite和python创建注册系统吗?

提问于
浏览
-1

我已经使用python,pyqt和SQLite创建了一个登录系统,但是我想知道是否可以创建一个注册系统 . 目前,我自己将用户名和密码存储在SQLite数据库中,然后输入它们,您就可以使用这些用户名和密码登录 . 但是,我希望用户能够通过在QLineEdit中输入用户名和密码来创建自己的用户名和密码,然后单击注册按钮,系统会自动将这些存储在数据库中 .

这是我的代码:

import sys
from PyQt4.Qt import *
import sys
from PyQt4 import QtGui, QtCore
import sqlite3
conn = sqlite3.connect('login.db')

cursor = conn.execute("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='STUDENT';")
if cursor.fetchone()[0] == 0:
  conn.execute('''CREATE TABLE STUDENT
       (FORENAME           TEXT    NOT NULL,
       SURNAME            TEXT     NOT NULL,
       USERNAME           TEXT   PRIMARY KEY,
       PASSWORD         TEXT);''')


  conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
      VALUES ('Sean', 'Ryan', 'sryan', 'hello' )");

  conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
      VALUES ('Jeff', 'Smith', 'jsmith', 'database' )");

  conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
      VALUES ('Teddy', 'Brown', 'tbrown', 'football' )");

  conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
      VALUES ('Mark', 'Thompson', 'mthompson', 'computer' )");

  conn.execute("INSERT INTO STUDENT (FORENAME,SURNAME,USERNAME,PASSWORD) \
      VALUES ('John', 'Brown', 'jbrown', 'phone' )");

  conn.commit()

class Login(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.textName = QtGui.QLineEdit(self)
        self.textName.setFixedWidth(150)
        self.textName.setPlaceholderText("Username");
        self.textPass = QtGui.QLineEdit(self)
        self.textPass.setEchoMode(self.textPass.Password)
        self.textPass.setFixedWidth(150)
        self.textPass.move(200,100)
        self.textPass.setPlaceholderText("Password");
        self.buttonLogin = QtGui.QPushButton('Login', self)
        self.buttonLogin.clicked.connect(self.handleLogin)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.textName)
        layout.addWidget(self.textPass)
        layout.addWidget(self.buttonLogin)
        self.buttonLogin.setFixedWidth(100)

        self.setGeometry(700,300,200,200)
        self.setWindowTitle("Login")



    def handleLogin(self):
      cursor = conn.execute("SELECT count(*)  from STUDENT where USERNAME = '" + str(self.textName.text()) + "' and PASSWORD = '" + str(self.textPass.text()) + "'")
      if cursor.fetchone()[0] == 0:
          QtGui.QMessageBox.warning(
              self, 'Error', 'Incorrect username or password')
      else:
          self.accept()

1 回答

  • 0

    你可以使用python-social-auth和电子邮件后端 . 有关详细信息,请参阅docs .

    我使用python-social-auth与Google和Facebook auth,但电子邮件后端允许您使用传统的用户名/密码注册,并存储密码和用户名 .

    就个人而言,我已经选择使用G和Facebook等第三方授权 . 不是每个人都喝杯茶 .

    Python-social-auth是我的最爱 . 您也可以考虑django-allauth,或者如果您真的只想要一些非常简单的尝试django-registration .

相关问题