为什么我的.fetchone函数返回“none”?

时间:2017-05-04 03:29:58

标签: python mysql tkinter

用户名是使用tkinter从Ent​​rybox中提取的变量。我需要dbsalt将cursor1.execute查询的结果作为字符串返回,但它返回“none”或提供一个回溯,指出“NoneType没有属性 getitem ”。我不明白什么是不正确的。

def login_verification(self):

    sql = ("SELECT salt FROM User WHERE username = %s")
    username = self.KUEntry.get()
    print username
    cursor1.execute(sql, username)
    dbsalt = cursor1.fetchone() [0]
    print dbsalt

    sql2 = ("SELECT PashHash FROM User WHERE username = %s")
    cursor2.execute(sql2, username)
    dbhash = cursor2.fetchone() [0]
    print dbhash

    test = hashlib.sha512(username + dbsalt).hexdigest()
    print test

    if test == dbhash:
        self.intro_screen
    else:
        print "incorrect password"

1 个答案:

答案 0 :(得分:2)

您没有调用execute方法,但已分配给它。使用cursor.execute(..)

进行调用

您应该使用'来引用字符串。

username = self.KUEntry.get()

cursor1.execute("SELECT salt FROM User WHERE username = '%s'" % username)
dbsalt = str(cursor1.fetchone())
print dbsalt
BTW,最好使用参数传递样式而不是手动格式化字符串以防止SQL注入。

cursor1.execute("SELECT salt FROM User WHERE username = %s", [username])