Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 希望将嵌套字典作为单个记录写入SQL表(错误:SQL语句的参数不足)_Python_Python 3.x - Fatal编程技术网

Python 希望将嵌套字典作为单个记录写入SQL表(错误:SQL语句的参数不足)

Python 希望将嵌套字典作为单个记录写入SQL表(错误:SQL语句的参数不足),python,python-3.x,Python,Python 3.x,我想将嵌套字典写入SQL表中的一行 我想将(User_ID)字典值和(V.values())合并到一行中 如果我尝试合并成一行,我会收到如下错误消息 “索引器错误:元组索引超出范围” “编程错误:SQL语句的参数不足” 因为这是一本嵌套字典,我不知道如何组合。我借助互联网尝试了一些方法,但没有用 如果有人能解决这个问题,那对我真的很有帮助 我认为问题在于for循环、sql查询执行。让我知道解决这个问题的任何想法 工作代码: import mysql.connector as conn db =

我想将嵌套字典写入SQL表中的一行

我想将(User_ID)字典值和(V.values())合并到一行中

如果我尝试合并成一行,我会收到如下错误消息

“索引器错误:元组索引超出范围”

“编程错误:SQL语句的参数不足”

因为这是一本嵌套字典,我不知道如何组合。我借助互联网尝试了一些方法,但没有用

如果有人能解决这个问题,那对我真的很有帮助

我认为问题在于for循环、sql查询执行。让我知道解决这个问题的任何想法

工作代码:

import mysql.connector as conn

db = conn.connect(
    host ="Localhost",
    user ="root",
    passwd ="admin",
    )

cursor = db.cursor()

cursor.execute("CREATE DATABASE IF NOT EXISTS EMPLOYEE_DETAILS_00")

db = conn.connect(
    host ="Localhost",
    user ="root",
    passwd ="admin",
    database = "EMPLOYEE_DETAILS_00"
    )

cursor = db.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS Details_Nested ( User_ID int(10), Name VARCHAR(255), Age int(3), Occupation VARCHAR(255), Department VARCHAR(255), Salary int(10), Address VARCHAR(255) ) ")

user_details = {}

while True:
    user_input = input(" You're Operation Please ( New / View ) Details : ").lower()

    if user_input == 'new':
        create_user_ID = input(" Enter the user ID :  ")
        user_details[create_user_ID] = {}
        user_name = input(" Enter the user name : ")
        user_details[create_user_ID]['Name'] = user_name
        user_age = int(input(" Enter the Age : "))
        user_details[create_user_ID]['Age'] = user_age
        user_occupation = input(" Enter the users occupation : ")
        user_details[create_user_ID]['Occupation'] = user_occupation
        user_department = input(" user department : ")
        user_details[create_user_ID]['Department'] = user_department
        user_income = int(input(" Enter the salary details : "))
        user_details[create_user_ID]['Salary'] = user_income
        user_address = input(" Enter the Address details ")
        user_details[create_user_ID]['Address'] = user_address

        print(f" New User account {create_user_ID} has been successfully created")
        for detail in user_details.items():
            print(detail)

        for k,v in user_details.items():
            columns = ", ".join(["User_ID"] + list(v.keys()))
            values = ", ".join([k] + [str(v) for v in v.values()])

            sql = 'INSERT INTO Details (User_ID, Name, Age, Occupation, Department, Salary, Address) VALUES ("%s","%s","%s","%s","%s","%s","%s")'
            cursor.execute(sql, (values,))
            db.commit()

        process = input(" Do you want to continue the Account creation process (YES / NO ) : ").lower()
        if process == 'no':
            break

    elif user_input == 'view':
        user_input = input("Enter the User_ID :")
        cursor.execute("SELECT * FROM Details WHERE USER_ID = '%s'" % (user_input))
        record = cursor.fetchall()
        print(record)
        break

    else:
        print(" Please enter the proper command to execute (new / view)")
代码-输出(用户定义的值)

SQL输出(例如)

让我知道这个问题的任何解决方案


提前感谢您的时间

您似乎有以下问题:

sql='在详细信息(用户ID、姓名、年龄、职业、部门、工资、地址)中插入值(“%s”、“s”、“s”、“s”、“s”、“s”、“s”)”)

有些值是
int
而不是
string
类型,例如:

User\u ID

年龄

工资

改为

sql='在详细信息(用户ID、姓名、年龄、职业、部门、工资、地址)中插入值(%s、%s、%s、%s、%s、%s、%s、%s)'


您似乎有以下问题:

sql='在详细信息(用户ID、姓名、年龄、职业、部门、工资、地址)中插入值(“%s”、“s”、“s”、“s”、“s”、“s”、“s”)”)

有些值是
int
而不是
string
类型,例如:

User\u ID

年龄

工资

改为

sql='在详细信息(用户ID、姓名、年龄、职业、部门、工资、地址)中插入值(%s、%s、%s、%s、%s、%s、%s、%s)'

{'1101': {'Name': 'Test_User', 'Age': Test_Age, 'Occupation': 'Test_Occupation'}}
User_ID  User_name    User_Age    User_Occupation

1101     Test_User    Test_Age    Test_Occupation