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