Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python数据库应用程序块_Python_Sql_Postgresql - Fatal编程技术网

python数据库应用程序块

python数据库应用程序块,python,sql,postgresql,Python,Sql,Postgresql,这是与postresql中的数据库交互的应用程序中的登录函数。我是python新手,目前正在执行except块中的两个print语句。 错误在于:cur.execute(mtype,(member_id,))任何关于为什么的想法都很受欢迎 def check_login(member_id, password): conn = database_connect() if(conn is None): return None cur = conn.curs

这是与postresql中的数据库交互的应用程序中的登录函数。我是python新手,目前正在执行except块中的两个print语句。 错误在于:cur.execute(mtype,(member_id,))任何关于为什么的想法都很受欢迎

def check_login(member_id, password):

    conn = database_connect()
    if(conn is None):
        return None
    cur = conn.cursor()
    try:
        mtype = """SELECT 'athlete' FROM athlete
                        WHERE member_id=%s
                        UNION
                        SELECT 'official' FROM official
                        WHERE member_id=%s
                        UNION
                        SELECT 'staff' FROM staff
                        WHERE member_id=%s"""
        cur.execute(mtype, (member_id, ))
        user_type = cur.fetchone()
    except:
        print("Error retrieving member type")


    try:
        sql = """SELECT member_id, title, given_names AS first_name, family_name, country_name, place_name AS residence
                 FROM public.country JOIN public.member USING (country_code) JOIN public.place ON (accommodation = place_id)
                 WHERE member_id=%s AND pass_word=%s"""

        cur.execute(sql, (member_id, password))
        user_data = cur.fetchone()

        tuples = {
            'member_id': user_data[0],
            'title': user_data[1],
            'first_name': user_data[2],
            'family_name': user_data[3],
            'country_name': user_data[4],
            'residence': user_data[5],
            'member_type': user_type[0]
        }
        cur.close()
        conn.close()
        return tuples
    except:
        print("Error Invalid Login")
        cur.close()
        conn.close()
        return None

我没有足够的理由发表评论。所以在这里发帖。仅仅说哪一行产生了错误并不能让我们深入了解问题所在。我的建议是要么打印出错误是什么,要么如果不知道怎么做,删除first try catch,看看产生了什么错误。如果您发布该消息,人们可以帮助您解决问题。

您在初始mtype分配中有多个
%s
,但您的execute只提供了一个只有一个参数的元组。这将失败。这可以通过在
execute
中提供正确数量的参数来解决:

mtype = """SELECT... member_id=%s UNION ... member_id=%s UNION ... member_id=%s"""
cur.execute(mtype, (member_id, member_id, member_id))

当然,代码中可能还有其他错误:不应该盲目捕捉异常,除非,您不在乎错误是什么。

您正在捕获所有异常,并询问为什么会抛出异常而不向我们显示异常。不要捕获异常并发布它是什么。您想知道为什么首先会命中异常吗?或者您想知道为什么会命中异常?为什么会在第一次命中异常place@Eb1993你能发布错误消息吗?我们可以查看错误并进行调试。