如何使用python在mysql中插入python dict的键和值
Posted
技术标签:
【中文标题】如何使用python在mysql中插入python dict的键和值【英文标题】:How to insert the keys and values of python dict in mysql using python 【发布时间】:2012-08-31 00:13:13 【问题描述】:我有一个这样的python dict:
my_dict = 'find': ['http://time.com', 'http://find.com'], 'time': ['http://any.com', 'http://www.tim.com', 'http://mine.in']...
我想在 mysql 表的两个不同列中插入字典 my_dict
的 keys
和 values
。列名分别为term
和urls
。我现在有三列:id
、term
、urls
和 我想在不同的行中插入每个键和值对。
我想将链接存储在urls
中,用逗号分隔。 my_dict 值中的网站链接必须以逗号分隔存储,例如http://time.com, http://mine.com.
我尝试按以下方式插入
for i in my_dict.items():
keys = i[0]
values = i[1]
sql = """INSERT INTO index_table (term, urls) VALUES (%s, %s)"""
cursor.execute(sql, (keys, values))
但它显示以下错误:
(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1")
【问题讨论】:
您是否检查过您生成的 SQL 是否符合您的预期? 为什么你不想使用某种 ORM 工具包?例如sqlalchemy
。
【参考方案1】:
您在此实例中的值是您尝试传递给 SQL 查询的列表,这会导致您出现问题。
如果您希望值部分中的每个 url 都有单独的记录(假设您总是有一个值部分的列表)
for i in my_dict.items():
term = i[0]
for url in i[1]:
sql = """INSERT INTO index_table (term, urls) VALUES (%s, %s)"""
cursor.execute(sql, (term, url))
或者,如果您想将 url 一起存储在一条记录中,则需要对列表进行腌制或转换为 json 之类的格式。从数据库中提取数据时需要您适当地处理数据
import json
for i in my_dict.items():
term = i[0]
urls = json.dumps(i[1])
sql = """INSERT INTO index_table (term, urls) VALUES (%s, %s)"""
cursor.execute(sql, (term, urls))
改为以逗号分隔的格式存储网址;
for i in my_dict.items():
term = i[0]
urls = ', '.join(i[1])
sql = """INSERT INTO index_table (term, urls) VALUES (%s, %s)"""
cursor.execute(sql, (term, urls))
【讨论】:
哦,不,对不起,我想将链接存储在 url 中,以逗号分隔,意味着我想删除方形和双引号, 刚刚更新了答案以显示存储用逗号分隔的网址以上是关于如何使用python在mysql中插入python dict的键和值的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中使用 MySQLdb 插入 mysql 后,如何安全有效地获取行 ID?
如何使用 executemany 将 Python 中的字典列表插入 MySQL
如何在使用 Python 插入 MySQL 数据库后获取“id”?
如何使用 Python 将 NULL 数据插入 MySQL 数据库?