[英]My code is not running, I am trying to retrieve data from json file. i don't know the problem with my sqlite3 query
所有这些数据都已获取并打印良好,但无法反映在 SQLBrowser 的数据库中。 当我打印变量的值时,我一直在代码末尾使用conn.commit
是正确的。 但是在它生成的 sqlite 文件中连一个值都没有得到[图片显示了它在 sqlfile 中的样子][1]
import ssl
import sqlite3
import json
ctx = ssl.create_default_context()
ctx.check_hostname= False
ctx.verify_mode = ssl.CERT_NONE
conn = sqlite3.connect('covid.sqlite')
cur = conn.cursor()
cur.executescript('''
DROP TABLE IF EXISTS Covid;
CREATE TABLE Covid (start_date TEXT, end_date TEXT, state TEXT, sex TEXT, age_group TEXT, covid_19_deaths INTEGER, total_deaths INTEGER, pneumonia_deaths INTEGER, influenza_deaths INTEGER, pneumonia_influenza_or_covid INTEGER)''')
conn.commit
hand = open('Covid.json').read()
data = json.loads(hand)
for item in data:
start_date = item['start_date']
end_date = item['end_date']
state = item['state']
sex = item['sex']
age_group = item['age_group']
covid_19_deaths = item['covid_19_deaths']
total_deaths = item['total_deaths']
pneumonia_deaths = item['pneumonia_deaths']
influenza_deaths = item['influenza_deaths']
pneumonia_influenza_or_covid = item['pneumonia_influenza_or_covid']
cur.execute('''INSERT INTO Covid (start_date)
VALUES ( ? )''', (start_date,) )
cur.execute('''INSERT INTO Covid (end_date)
VALUES ( ? )''', ( end_date,) )
cur.execute('''INSERT INTO Covid (state)
VALUES ( ? )''', ( state,) )
cur.execute('''INSERT INTO Covid (sex)
VALUES ( ? )''', ( sex,) )
cur.execute('''INSERT INTO Covid (age_group)
VALUES ( ? )''', ( age_group,) )
cur.execute('''INSERT INTO Covid (covid_19_deaths)
VALUES ( ? )''', ( covid_19_deaths,) )
cur.execute('''INSERT INTO Covid (total_deaths)
VALUES ( ? )''', ( total_deaths,) )
cur.execute('''INSERT INTO Covid (pneumonia_deaths)
VALUES ( ? )''', ( pneumonia_deaths,) )
cur.execute('''INSERT INTO Covid (influenza_deaths)
VALUES ( ? )''', ( influenza_deaths,) )
cur.execute('''INSERT INTO Covid (pneumonia_influenza_or_covid)
VALUES ( ? )''', ( pneumonia_influenza_or_covid,) )
cur.execute('''INSERT INTO Covid
(start_date,end_date,state,sex,age_group,covid_19_deaths,total_deaths,pneumonia_deaths,influenza_deaths,pneumonia_influenza_or_covid ) VALUES ( ?, ?, ? ,?, ?, ?, ?, ?, ?, ?)''',
(start_date,end_date,state,sex,age_group,covid_19_deaths,total_deaths,pneumonia_deaths,influenza_deaths,pneumonia_influenza_or_covid ))
conn.commit```
[1]: https://i.stack.imgur.com/RAdy1.png
I cannot find the mistakes i'm making in the code.
代码不完整(没有创建/初始化数据, cur.execute
语句似乎缩进不正确)。
您也没有解释您观察到的确切问题是什么。
但是,您的代码中有一个明显的问题:您迭代data
for item in data:
但是,您继续使用data[0]
而不是使用item
:
start_date = data[0]['start_date']
因此,您不是在data
中插入所有内容,而是在插入第一行len(data)
次。
你也永远不会调用commit
,所以它不会做任何事情:
conn.commit
PS:我重新格式化了帖子,所以代码块是正确的,你需要打开和关闭“三重反引号”在自己的行上,例如
```
for foo in bar:
...
```
不是
```for foo in bar:
...```
这是您编写并呈现为损坏的片段的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.