首页 > 解决方案 > 将嵌套字典写入新创建的 SQL 表时面临的问题

问题描述

我需要在新创建的 SQL 表中编写嵌套字典。

我认为我在 SQL 中通过提及它的列来创建新表时犯了一些错误。任何人都可以查看代码并告诉我此步骤是否正确。

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

cursor = db.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS Details ( User_ID VARCHAR(255), Name VARCHAR(255), Age VARCHAR(255) ) ")

我需要将嵌套的 Python 字典写入 SQL 表。我正在尝试通过使用 for 循环来做到这一点。这是我试图运行的代码:

user_details = {}
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

for v in user_details.values():
    cols = v.keys()
    vals = v.values()

    sql = "INSERT INTO Details ({}) VALUES ({})".format(
        ', '.join(cols),
        ', '.join(['%s'] * len(cols)));

    cursor.execute(sql, vals)

如果我运行此代码,我会收到以下错误

Error : Couldn't process parameters

任何人都可以查看代码并告诉我我在哪里犯了错误,无论是在创建 SQL 表还是在 FOR 循环中。

提前致谢 !!

标签: pythonpython-3.x

解决方案


我认为问题是当您尝试在循环内创建 sql 查询时。试试这个

sql = "INSERT INTO Details {}) VALUES ({})".format(
    ', '.join(cols),
    ', '.join(map(str,vals)));

推荐阅读