Nov-22-2019, 10:57 AM
Hello, As the subject of this message implies, the following code:
after I enter username & password
What am I missing here ?
I'm using Visual Studio Code 1.40.1 on a windows 10 with mysql server 8.0 along with Python 3.8 installed.
#imports
from tkinter import *
from tkinter import messagebox as ms
import mysql.connector as mysql
mydb = mysql.connect(
host="localhost",
user="james",
passwd="simplepassword",
database="testdb"
)
#main Class
class main:
def __init__(self,master):
# Window
self.master = master
# Some Usefull variables
self.username = StringVar()
self.password = StringVar()
self.n_username = StringVar()
self.n_password = StringVar()
#Create Widgets
self.widgets()
#Login Function
def login(self):
#Establish Connection
cursor = mydb.cursor()
#Find user If there is any take proper action
find_user = ("SELECT * FROM user WHERE username = ? and password = ?")
#find_user = ('SELECT username = ? and password = ? FROM testdb.user')
cursor.execute("SELECT [(self.username.get()),(self.password.get())]")
result = cursor.fetchall()
if result:
self.logf.pack_forget()
self.head['text'] = self.username.get() + '\n Loged In'
self.head['pady'] = 150
else:
ms.showerror('Oops!','Username Not Found.')
def new_user(self):
#Establish Connection
cursor = mydb.cursor()
#Find Existing username if any take proper action
find_user = ('SELECT * FROM user WHERE username = ?')
cursor.execute(find_user,[(self.username.get())])
if cursor.fetchall():
ms.showerror('Error!','Username Taken Try a Diffrent One.')
else:
ms.showinfo('Success!','Account Created!')
self.log()
#Create New Account
insert = 'INSERT INTO user(username,password) VALUES(?,?)'
cursor.execute(insert,[(self.n_username.get()),(self.n_password.get())])
cursor.commit()
#Frame Packing Methords
def log(self):
self.username.set('')
self.password.set('')
self.crf.pack_forget()
self.head['text'] = 'LOGIN'
self.logf.pack()
def cr(self):
self.n_username.set('')
self.n_password.set('')
self.logf.pack_forget()
self.head['text'] = 'Create Account'
self.crf.pack()
#Draw Widgets
def widgets(self):
self.head = Label(self.master,text = 'LOGIN',font = ('',35),pady = 10)
self.head.pack()
self.logf = Frame(self.master,padx =10,pady = 10)
Label(self.logf,text = 'Username: ',font = ('',20),pady=5,padx=5).grid(sticky = W)
Entry(self.logf,textvariable = self.username,bd = 5,font = ('',15)).grid(row=0,column=1)
Label(self.logf,text = 'Password: ',font = ('',20),pady=5,padx=5).grid(sticky = W)
Entry(self.logf,textvariable = self.password,bd = 5,font = ('',15),show = '*').grid(row=1,column=1)
Button(self.logf,text = ' Login ',bd = 3 ,font = ('',15),padx=5,pady=5,command=self.login).grid()
Button(self.logf,text = ' Create Account ',bd = 3 ,font = ('',15),padx=5,pady=5,command=self.cr).grid(row=2,column=1)
self.logf.pack()
self.crf = Frame(self.master,padx =10,pady = 10)
Label(self.crf,text = 'Username: ',font = ('',20),pady=5,padx=5).grid(sticky = W)
Entry(self.crf,textvariable = self.n_username,bd = 5,font = ('',15)).grid(row=0,column=1)
Label(self.crf,text = 'Password: ',font = ('',20),pady=5,padx=5).grid(sticky = W)
Entry(self.crf,textvariable = self.n_password,bd = 5,font = ('',15),show = '*').grid(row=1,column=1)
Button(self.crf,text = 'Create Account',bd = 3 ,font = ('',15),padx=5,pady=5,command=self.new_user).grid()
Button(self.crf,text = 'Go to Login',bd = 3 ,font = ('',15),padx=5,pady=5,command=self.log).grid(row=2,column=1)
#create window and application object
root = Tk()
root.title("Login Form")
main(root)
root.mainloop()Generates: mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[(self.username.get()),(self.password.get())]' at line 1after I enter username & password
What am I missing here ?
I'm using Visual Studio Code 1.40.1 on a windows 10 with mysql server 8.0 along with Python 3.8 installed.
