0%

Python转换Json格式插入数据库

公司任务

是一个使用json和list的例子,所以还是记录下

代码:

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
# -*- coding: utf-8 -*-
# parse json and use api to upload all question
import json
import urllib
import urllib2
import requests
import re

QUESTION_BANK_ID=77
KNOWLEDGE_POINT_IDS=['1']
QUESTION_ADD_URL='http://192.168.0.100:8882/api/v1/questions/add'
X_USERID='2'

def commonChange(question):
del question['useCount']
del question['id']
question['questionBankId']= QUESTION_BANK_ID


def pushData(json_data,url):
headers={'content-type': 'application/json', 'X-UserId': X_USERID}
response = requests.post(url, data=json_data, headers=headers)
if response.status_code:
print 'insert succeed'

def formatQuestion(question):
commonChange(question)
# 题型 0:判断题,1:单选题,2:多选题,3:填空题,4:简答题,5:代码题
if question['questionType'] == 0:
formatJudgeQuestion(question)
elif question['questionType']==1:
formatSingleChoiceQuestion(question)
elif question['questionType']==2:
formatMuitlChoiceQuestion(question)
elif question['questionType']==3:
formatFillQuestion(question)
elif question['questionType']==4:
formatAnswerQuestion(question)
elif question['questionType']==5:
formatCodeQuestion(question)
else:
print 'error can\'t parse'

def formatSingleChoiceQuestion(question):
print 'format 单选题'
question['knowledgePointIds']=KNOWLEDGE_POINT_IDS
# del tags's id
for i in range(len(question['tags'])):
del question['tags'][i]['id']
for i in range(len(question['optionDTOS'])):
del question['optionDTOS'][i]['id']
question['options'] = question['optionDTOS']
del question['optionDTOS']

#push data
pushData(json.dumps(question),QUESTION_ADD_URL)
#exit('test formatSingleChoiceQuestion')


def formatJudgeQuestion(question):
print 'format 判断题'
# delete optionsDTOS
del question['optionDTOS']
# del tags's id
for i in range(len(question['tags'])):
del question['tags'][i]['id']
#push data
pushData(json.dumps(question),QUESTION_ADD_URL)
#exit('test formatSingleChoiceQuestion')

def formatMuitlChoiceQuestion(question):
print 'format 多选题'


def formatFillQuestion(question):
print 'format 填空题'
# delete optionsDTOS
del question['optionDTOS']
question['knowledgePointIds']=KNOWLEDGE_POINT_IDS
parseStr = question['stem']
blankID=''
blanks=[]
while re.match(r'.*(__.{1}__).*',parseStr):
blankID=re.match(r'.*(__.{1}__).*',parseStr).group(1)
parseStr = re.sub(blankID,'',parseStr)
blanks.append({
"blankAnswer":["sorry no answer avaiable for "+blankID],
"blankId":blankID
})

question['blanks'] = json.dumps(blanks)
#push data
pushData(json.dumps(question),QUESTION_ADD_URL)
#exit('test formatSingleChoiceQuestion')

def formatAnswerQuestion(question):
print 'format 简答题'
#push data
pushData(json.dumps(question),QUESTION_ADD_URL)
#exit('test formatSingleChoiceQuestion')

def formatCodeQuestion(question):
print 'format 代码题'

def main(fileName):
with open(fileName,'r') as f:
load_json = json.load(f)
question_size = load_json['size']
# start formating
for i in range(question_size):
formatQuestion(load_json['res']['questions'][i])


if __name__=="__main__":
main('./quiz.json')


Welcome to my other publishing channels