【发布时间】:2019-01-03 13:37:33
【问题描述】:
我的 JSON API 中有两个数据集。我无法将两者都插入 SQL Server。使用 for 循环的迭代似乎没有获取第二个数据。有人可以帮我理解如何解决这个问题。这对我来说是新的,所以我无法找出问题所在,因为编码与 SQL 有点不同
import urllib, json
import pyodbc
#read data from API
url = "http://nagiosdatagateway.vestas.net/esq/ITE1452552/logstash- 2018.12.16/2/desc"
response = urllib.urlopen(url)
data = json.loads(response.read())
#define db connection
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
"Server=DKCDCVDCP42\DPA;"
"Database=VPDC;"
"Trusted_Connection=yes;")
cursor = cnxn.cursor()
i = 0
j = len(data)
print j
for i in range(i,j-1):
# print data[1]["_source"]["utc_timestamp"]
print i
print data[i]["_source"]["nagios_comment"]
print data[i]["_source"]["nagios_author"]
cursor.execute("insert into vpdc.pa.Pythontable(nagios_comment,nagios_author) values (?,?)",(data[i]
["_source"]["nagios_comment"],data[i]["_source"]["nagios_author"] ))
i += 1
print i
cnxn.commit()
这两组值都应该在列的 SQL 表中
Nagios_comment 和 Nagios_author
307262828 亚历克斯·克里斯托弗·拉莫斯
307160348 亚历克斯·克里斯托弗·拉莫斯
【问题讨论】:
-
请修正代码缩进。
-
i += 1在 for 循环中不需要。那是因为range(i, j-1)返回一个可迭代对象,并且 for 会自动迭代它。 -
另外,
i += 1不会更改范围生成器。 -
欢迎来到 SO。在 Python 中,缩进很重要(它是语言语法的一部分),因此没有人可以帮助您解决 sn-p 损坏的缩进。请编辑您的帖子以修复缩进,使其完全与您自己的代码匹配。
-
是的,谢谢@brunodesthuilliers。当您提到缩进时,我再次尝试缩进 cursor.execute 语句。之前在循环之外。我现在纠正了它并且工作得很好。