実現したいこと
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 コメント