在检查某人是否已存在时将元组插入数据库时​​出错(python3 + sqlite3)

时间:2019-06-25 15:44:15

标签: python-3.x sqlite

我正在为学校做一个简单的系统来执行家庭作业,用户在其中登录并输入密码以使用太多功能。我创建了一个按钮,该按钮打开了一个窗口以注册新用户,我可以注册没有问题,已经在数据库中检查了,那里有新用户。但是有必要进行处理,以使该人不会使用相同的登录名创建帐户

我遵循SQLITE(http://www.sqlitetutorial.net/sqlite-python/sqlite-python-select/)文档的说明 这是

1。首先,通过创建Connection对象建立与SQLite数据库的连接。

2。接下来,使用Connection对象的cursor方法创建一个Cursor对象。

3。然后,执行SELECT语句。

4。之后,调用游标对象的fetchall()方法以获取数据。

5。最后,循环游标并分别处理每一行。


这是我的文件Tela.py和BancoLogin.py:

(Tela.py)

from tkinter import *
from tkinter import messagebox as ms
import sqlite3
from BancoLogin import BancoLogin

(...)other defs(...)

def new_user(self):
        #Establish Connection
        bancoLogin = BancoLogin()
        c = bancoLogin.conexao.cursor() 

        #Find Existing username if any take proper action
        find_user = ('SELECT * FROM user WHERE username = ?')
        c.execute(find_user,[(self.username.get())])        

        rows = c.fetchall()
        print(rows)
        if c.fetchall():
            ms.showerror('Error!', 'Username taken - try a different one.')
        else:
            ms.showinfo('Success!', 'Account Created!')
            self.log()
            #Create New Account 
            insert = 'INSERT INTO user(username,password) VALUES(?,?)'
            c.execute(insert,[(self.n_username.get()),(self.n_password.get())])
            bancoLogin.conexao.commit()

我的数据库在另一个文件中(BancoLogin.py):

import sqlite3

class BancoLogin():
    def __init__(self):
        self.conexao = sqlite3.connect('bancoLogin.db')
        self.createTable()

    def createTable(self):
         c = self.conexao.cursor()

         c.execute('CREATE TABLE IF NOT EXISTS user(username TEXT NOT NULL, password TEX NOT NULL);')
         self.conexao.commit()
         c.close()

我意识到出了点问题,因为当我这样做时:

rows = c.fetchall()
print(rows)

在shell中,我收到:

[]

0 个答案:

没有答案