0

これが基本的な修正であり、投稿の長さである場合はお詫び申し上げますが、私は Python を初めて使用します。コンテキストの目的で、スクリプトの大部分も含めました。

スクリプトを使用して、スキャン データを JSON から MySQL DB にプルしています。アップデートがリリースされるまで、スクリプトは正常に機能していました。

スクリプトを実行すると、次のエラーが表示されます。

for result in resultc['response']['results']: TypeError: 文字列インデックスは整数でなければなりません

この更新の前に、各値のデータ型を知っていましたが、これは変更されており、どこにあるのか特定できません。各値を文字列として認識されるように変換する方法はありますか?

# Send the cumulative JSON and then populate the table
cumresponse, content = SendRequest(url, headers, cumdata)
resultc = json.loads(content)
off = 0
print "\nFilling cumvulndata table with vulnerabilities from the cumulative database. Please wait..."
for result in resultc['response']['results']:
    off += 1
    print off, result
    cursor.execute ("""INSERT INTO cumvulndata(
offset,pluginName,repositoryID,
severity,pluginID,hasBeenMitigated,
dnsName,macAddress,familyID,recastRisk,
firstSeen,ip,acceptRisk,lastSeen,netbiosName,
port,pluginText,protocol) VALUES 

(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,(FROM_UNIXTIME(%s)),%s,%s,(FROM_UNIXTIME(%s)),%s,%s,    %s,%s)""" , (off,result["pluginName"],result["repositoryID"]),result["severity"]),
result["pluginID"]), result["hasBeenMitigated"]),result["dnsName"],
result["macAddress"],result["familyID"]),result["recastRisk"]),
result["firstSeen"],result["ip"],result["acceptRisk"],result["lastSeen"],
result["netbiosName"],result["port"],result["pluginText"],result["protocol"]))
4

1 に答える 1

1

これをforループの前に置いて、どのオブジェクトが文字列であるかを調べます(おそらく2番目のものだと思います)

print type(resultc)
print type(resultc['response'])
于 2013-02-14T22:20:01.330 に答える