当从 ordereddict 格式化我的 sql-insert 语句时,数据只有 1 个字符,而不是 ordereddict 的 key/value

When formatting my sql-insert statement from ordereddict, the data is only 1 char, not the key/value from ordereddict

我正在尝试向 mysql 中插入一个有序的字典,但我认为我遗漏了一个简单的项目。

sql_command = """CREATE TABLE asdf ( id INTEGER PRIMARY KEY, description TEXT(100), data_value TEXT(100));"""
cursor.execute(sql_command)
for id, p in enumerate(info):
    format_str = """INSERT INTO asdf (id, description, data_value) VALUES ({id}, '{description}', '{data_value}');"""
    sql_command = format_str.format(id=id, description=p[0], data_value=p[1])
    print(sql_command)

这实际上完成了我想要的 95% 但是,由于某种原因它只打印第一个 'item' 的前两个字母所以如果 'info' 是下面的数据

OrderedDict([('name', 'bob'), ('favorite food', 'pizza')])

它打印出以下内容

INSERT INTO asdf (id, description, data_value) VALUES (0, 'n', 'a');
INSERT INTO asdf (id, description, data_value) VALUES (1, 'f', 'a');

但我希望它打印以下内容

INSERT INTO asdf (id, description, data_value) VALUES (0, 'name', 'bob');
INSERT INTO asdf (id, description, data_value) VALUES (1, 'favorite  food', 'pizza');

想法?

你手边有一本字典,enumerate() 给你字典的 index,key,而不是字典的值。

for id, p in enumerate(info):
    format_str = """INSERT INTO asdf (id, description, data_value) VALUES ({id}, '{description}', '{data_value}');"""

    # here are changes
    sql_command = format_str.format(id=id, description=p, data_value=info[p])

应该修复它。

您的索引 p[0] 是您 key 的第一个字符,p[1] 第二个字符。
将其替换为 p(全键)和 info[p](值的字典访问)。