当从 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]
(值的字典访问)。
我正在尝试向 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]
(值的字典访问)。