我有一个JSON文件,我从该文件中读取数据并获取字典。我希望将这个完整的字典插入到SQL Server数据库中,以便可以从数据库中将其作为字典读取。
但是在插入相同的代码时,我会得到如下错误。
07/13/2018 11:25:00:错误:异常102:
‘camera’附近的语法不正确。.DB Lib错误
消息102,严重程度15:
常规SQL Server错误:检查来自SQL Server的消息
下面是我的INSERT
查询。
INSERT INTO hw_info (hostname, peripheralsInfo)
VALUES ('linux-host', '{u'camera': {u'ab': {u'model': u'Model1', u'version': u'Version1', u'selectorMask': u'Data1'}, u'cd': {u'model': u'Model2', u'version': u'Version2', u'selectorMask': u'Data2'}}}')
如何将此字典插入数据库?
发布于 2018-07-15 07:40:35
要将json插入到数据库中,不要将其转换为Python对象;只需存储从文件中读取的字符串。
with open(peripheralsJsonFile).read() as f:
peripheralsInfo = f.read()
myquery = """INSERT INTO hw_info(hostname, peripheralsInfo) VALUES(%s,%s)"""
cursor.execute(myquery, (hostname, peripheralsInfo))
当您希望稍后在程序中使用这些数据时,可以通过json.loads()
传递SELECT查询中的字符串,使其成为Python对象。
编辑
这里有两点意见。
prefipheralsInfo = open(peripheralsJsonFile).read()
在读取后不能正确关闭文件,所以我使用了一个context manager来解决这个问题。发布于 2018-07-13 14:20:44
由于它是MySql,您可以尝试将字段设置为TextField,并将其转换为字符串并保存。在检索时,您可以使用ast.literal_eval(fieldName)
。
如果你使用的是PostgreSql,你可以在模型中使用JSONField。
https://stackoverflow.com/questions/51318559
复制相似问题