找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: sally786

[求助] json存入sql server

5

主题

14

帖子

14

积分

贫民

积分
14
sally786  楼主| 发表于 2017-12-7 11:35:29 | 显示全部楼层
剑心无痕 发表于 2017-12-7 11:31
print(sql[0])打印出来看看语法正确么,怀疑是sql语法错误

打印出来是没问题的 是表里的数据 但是没有导入数据库wodata表里
回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-7 11:37:50 | 显示全部楼层
sally786 发表于 2017-12-7 11:26
好像这一句有错误
cursor.execute(''.join(sql))

我怀疑你的数据有空值,需要处理一下
sql = []
for lines in records:
    if isinstance(lines, dict):
        sql.append('INSERT INTO wodata(%s) values (%s);' % (','.join([str(i) for i in lines.keys()]), ','.join(["'%s'" % str(i) if str(i)!= "" else "null" for i in lines.values()])))
        # 如果lines的key都是str类型可以把','.join([str(i) for i in lines.keys()])替换成','.join(lines .keys())同理values也可以替换
cursor.execute(''.join(sql))
cnxn.commit()
回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-7 11:39:10 | 显示全部楼层
sally786 发表于 2017-12-7 11:35
打印出来是没问题的 是表里的数据 但是没有导入数据库wodata表里

这里用的是拼装sql语句最后一起执行,如果有一句错误就会回滚,详情查询数据库事务
回复 支持 反对

使用道具 举报

5

主题

14

帖子

14

积分

贫民

积分
14
sally786  楼主| 发表于 2017-12-7 16:37:19 | 显示全部楼层
剑心无痕 发表于 2017-12-7 11:39
这里用的是拼装sql语句最后一起执行,如果有一句错误就会回滚,详情查询数据库事务 ...

终于可以了 谢谢谢谢~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表