首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将字典插入到在Python中使用JSON创建的SQL数据库

将字典插入到在Python中使用JSON创建的SQL数据库
EN

Stack Overflow用户
提问于 2018-07-13 14:05:20
回答 2查看 2K关注 0票数 2

我有一个JSON文件,我从该文件中读取数据并获取字典。我希望将这个完整的字典插入到SQL Server数据库中,以便可以从数据库中将其作为字典读取。

但是在插入相同的代码时,我会得到如下错误。

07/13/2018 11:25:00:错误:异常102:

‘camera’附近的语法不正确。.DB Lib错误

消息102,严重程度15:

常规SQL Server错误:检查来自SQL Server的消息

下面是我的INSERT查询。

代码语言:javascript
复制
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'}}}')

如何将此字典插入数据库?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-15 07:40:35

要将json插入到数据库中,不要将其转换为Python对象;只需存储从文件中读取的字符串。

代码语言:javascript
复制
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对象。

编辑

这里有两点意见。

  1. prefipheralsInfo = open(peripheralsJsonFile).read()在读取后不能正确关闭文件,所以我使用了一个context manager来解决这个问题。
  2. 你可以通过使用Python的字符串插值来格式化你的查询字符串。这使得您的程序容易受到SQL injection attacks的攻击。在我的示例中,我使用parameterized query来规避该漏洞。参数还有助于确保您的输入作为正确的数据类型传递到数据库。
票数 1
EN

Stack Overflow用户

发布于 2018-07-13 14:20:44

由于它是MySql,您可以尝试将字段设置为TextField,并将其转换为字符串并保存。在检索时,您可以使用ast.literal_eval(fieldName)

如果你使用的是PostgreSql,你可以在模型中使用JSONField。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51318559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档