提问人:fiveBenilu 提问时间:11/7/2023 最后编辑:marc_sfiveBenilu 更新时间:11/7/2023 访问量:16
函数在 python 中不接受传输参数
Function not accepting transfer parameters in python
问:
我是python的新手,我目前正在尝试开发一个带有python数据库连接的简单程序。目前,我正在尝试创建一个函数来创建与我的数据库的连接,询问特定用户是否在此数据库中并返回布尔值。但是,我的函数需要两个传输参数才能工作:来自主程序的用户和密码。但是,每次我尝试运行此函数时,我都会收到以下错误:
TypeError:checkLogin() 接受 2 个位置参数,但给出了 3 个
这是我的连接类的代码:
from mysql.connector import *
class connection:
def __init__(self, user, password, host, database):
self.user = user
self.password = password
self.host = host
self.database = database
def writeToDB(query):
'''Schreibt eine query auf die Datenbank'''
conn = connect(object.user,object.password,object.host,object.database)
cursor = conn.cursor()
cursor.execute(query)
conn.commit()
cursor.close()
conn.close()
def checkLogin(myuser, mypassword):
'''Fragt Login-Daten innerhalb einer Datenbank ab und liefert ein boolean zurück'''
conn = connect(object.user,object.password,object.host,object.database)
cursor = conn.cursor()
cursor.execute("SELECT * FROM Benutzer WHERE Benutzername like '{myuser}' AND Passwort like '{mypassword}'")
result = cursor.fetchone()
cursor.close()
conn.close()
if result:
return True
else:
return False
这是我的主类的一部分,我尝试通过对象实例 newConnection 调用函数:
def button_action():
name = benutzername.get()
passcode = passwort.get()
bAllowed = newConnection.checkLogin(name, passcode)
我已经尝试了几件事来解决这个问题,但是它们都没有对错误产生影响。唯一对我有用的是将功能转移到我的主程序。然而,这质疑了面向对象的方法。我只是不明白为什么它不接受传输参数。希望你能帮到你!
答:
0赞
Heinz Siahaan
11/7/2023
#1
您遇到的错误是由于类中的实例方法需要将实例本身(self)作为其第一个参数。在连接类中,writeToDB 和 checkLogin 方法都缺少 self 作为其第一个参数。
因此,您可以将方法更新为:
...
def writeToDB(self, query):
'''Schreibt eine query auf die Datenbank'''
conn = connect(user=self.user, password=self.password, host=self.host, database=self.database)
cursor = conn.cursor()
.....
def checkLogin(self, myuser, mypassword):
'''Fragt Login-Daten innerhalb einer Datenbank ab und liefert ein boolean zurück'''
conn = connect(user=self.user, password=self.password, host=self.host, database=self.database)
cursor = conn.cursor()
....
支持文章:
评论
0赞
fiveBenilu
11/7/2023
谢谢,错误解决了,我的程序正在工作!
评论