-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJSON2SQLite.py
More file actions
122 lines (94 loc) · 2.51 KB
/
JSON2SQLite.py
File metadata and controls
122 lines (94 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Êîíâåðòàöèÿ JSON â SQLite íà Python
# https://dzen.ru/subscriptions-manager?channel=615c3ace71bd4944acea8a67
# Ïðèìåð JSON-äàííûõ
# Äîïóñòèì, ÷òî ó íàñ åñòü ôàéë users.json ñî ñëåäóþùèì ñîäåðæèìûì:
[
{
"id": 1,
"name": "Anna",
"email": "anna@example.com"
},
{
"id": 2,
"name": "Ivan",
"email": "ivan@example.com"
}
]
# Ñêðèïò äëÿ êîíâåðòàöèè
# Ïåðåä íàïèñàíèåì ñêðèïòà, ïåðâûì äåëîì ìû èìïîðòèðóåì ìîäóëü sqlite3 äëÿ ðàáîòû ñ ÁÄ, à òàêæå ìîäóëü json äëÿ ðàáîòû ñ íàøèì json-ôàéëîì:
import json
import sqlite3
# Çàãðóçèì äàííûå èç json-ôàéëà, èñïîëüçóÿ êîíòåêñòíûé ìåíåäæåð with … as:
import json
import sqlite3
# Çàãðóæàåì JSON-äàííûå
with open('users.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# Ïîäêëþ÷èìñÿ ê áàçå äàííûõ SQLite ïîä íàçâàíèåì users.db (áóäåò ñîçäàíà, åñëè å¸ íå ñóùåñòâóåò):
import json
import sqlite3
with open('users.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# Ïîäêëþ÷àåìñÿ ê SQLite (ñîçäàñò ôàéë, åñëè åãî íåò)
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
# Ñîçäàäèì òàáëèöó, ïðåäâàðèòåëüíî óäàëèâ å¸, ÷òîáû èçáåæàòü îøèáîê â ñëó÷àå, åñëè îíà óæå ñóùåñòâîâàëà:
import json
import sqlite3
with open('users.json', 'r', encoding='utf-8') as f:
data = json.load(f)
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
# Ñîçäà¸ì òàáëèöó (åñëè íóæíî, óäàëÿåì ïåðåä ýòèì)
cursor.execute('DROP TABLE IF EXISTS users')
cursor.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL
)
''')
# Èñïîëüçóÿ öèêë âñòàâèì äàííûå èç json-ôàéëà â òàáëèöó áàçû äàííûõ:
import json
import sqlite3
with open('users.json', 'r', encoding='utf-8') as f:
data = json.load(f)
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute('DROP TABLE IF EXISTS users')
cursor.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL
)
''')
# Âñòàâëÿåì äàííûå
for user in data:
cursor.execute('''
INSERT INTO users (id, name, email)
VALUES (:id, :name, :email)
''', user)
# Ñîõðàíèì èçìåíåíèÿ è çàêðûâàåì ñîåäèíåíèå:
import json
import sqlite3
with open('users.json', 'r', encoding='utf-8') as f:
data = json.load(f)
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute('DROP TABLE IF EXISTS users')
cursor.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL
)
''')
for user in data:
cursor.execute('''
INSERT INTO users (id, name, email)
VALUES (:id, :name, :email)
''', user)
# Ñîõðàíÿåì èçìåíåíèÿ è çàêðûâàåì ñîåäèíåíèå
conn.commit()
conn.close()