我试图通过将字典转换为字符串然后尝试插入来将以下字典存储到 mysql DB 中,但出现以下错误。如何解决这个问题,或者有其他方法将字典存储到 mysql DB 中吗?
dic = {'office': {'component_office': ['Word2010SP0', 'PowerPoint2010SP0']}}
d = str(dic)
# Sql query
sql = "INSERT INTO ep_soft(ip_address, soft_data) VALUES ('%s', '%s')" % ("192.xxx.xx.xx", d )
soft_data is a VARCHAR(500)
错误:
执行异常(1064,“您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本对应的手册,以获取正确的语法
在 'office' 附近使用:{'component_office': ['Word2010SP0', 'PowerPoint2010SP0' 在第 1 行")
有什么建议或帮助吗?
首先,永远不要像这样构建原始 SQL 查询。永远不能。这就是参数化查询的用途。你要求一个SQL注入 http://en.wikipedia.org/wiki/SQL_injection攻击。
如果要存储任意数据(例如 Python 字典),则应该序列化该数据。JSON http://www.python.org/doc/current/library/json.html对于格式来说是不错的选择。
总的来说,您的代码应该如下所示:
import MySQLdb
import json
db = MySQLdb.connect(...)
cursor = db.cursor()
dic = {'office': {'component_office': ['Word2010SP0', 'PowerPoint2010SP0']}}
sql = "INSERT INTO ep_soft(ip_address, soft_data) VALUES (%s, %s)"
cursor.execute(sql, ("192.xxx.xx.xx", json.dumps(dic)))
cursor.commit()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)