json形式のデータをfor分を使ってsqliteに登録

実現したいこと

json形式のデータをfor分を使ってsqliteに登録をpythonを使用して実現したい

前提

ServiceNowというSaaS(PaaS)に存在するデータをAPIで取得(JSON形式でレスポンス)し、
JSON形式で取得したデータをsqliteに登録したいが、vscodeでエラーが出てしまう。
エラーが発生せずに実行したい。

APIで取得できるJSONでの以下データの"P1000165"、"lnux100"、"2022-03-28 08:00:00"を
sqliteに登録したいです。

{
"result": [
{
"asset_tag": "P1000165",
"name": "lnux100",
"install_date": "2022-03-28 08:00:00"
}
]
}

発生している問題・エラーメッセージ

変数dataは定義しているはずですが、以下がエラーメッセージが出力されます。

for item in data["result"]:
^^^^
NameError: name 'data' is not defined

該当のソースコード

#Need to install requests package for python
#easy_install requests
import requests
import sqlite3

url = 'url = 'https://devxxxxxxx.service-now.com/api/now/table/cmdb_ci_linux_server?sysparm_query=nameSTARTSWITHlnux100&sysparm_fields=name%2Cinstall_date%2Casset_tag&sysparm_limit=1'
'

user = 'xxxxx'
pwd = 'xxxxx'

headers = {"Content-Type":"application/json","Accept":"application/json"}

response = requests.get(url, auth=(user, pwd), headers=headers )

if response.status_code != 200:

data = response.json()

conn = sqlite3.connect("/Users/xxxx/Desktop/xxxxx.db")

cursor = conn.cursor()

for item in data["result"]:
field1 = item["asset_tag"] # テーブルのレコードからの値を取得
field2 = item["name"] # テーブルのレコードから値を取得
field3 = item["install_date"] # テーブルのレコードから値を取得
conn.execute("INSERT INTO linux_table VALUES (field1, field2, field3)")

conn.commit()

conn.close()

コメントを投稿

0 コメント