-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmake_data.py
More file actions
138 lines (108 loc) Β· 5.5 KB
/
make_data.py
File metadata and controls
138 lines (108 loc) Β· 5.5 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# make_data.py νμΌμ λλ€ν λλ―Έ λ°μ΄ν°λ₯Ό λ§λλ μμ νμΌμ
λλ€.
# λ°λμ, μ¬μ©νλ νλλ₯Ό νμΈν ν λ³ΈμΈμ νλ‘μ νΈμ λ§κ² μμ νμ¬ μ§νν΄μΌ ν©λλ€.
# [μ°Έκ³ ] νμ¬ μ½λλ μλ User λͺ¨λΈμ κΈ°μ€μΌλ‘ μμ±λμ΄ μμ΅λλ€.
# class User(AbstractBaseUser):
# username = models.CharField(max_length=30, unique=True)
# nickname = models.CharField(max_length=255, blank=True, null=True)
# email = models.EmailField(max_length=254, blank=True, null=True)
# age = models.IntegerField(blank=True, null=True)
# money = models.IntegerField(blank=True, null=True)
# salary = models.IntegerField(blank=True, null=True)
# # κ°μ
ν μν λͺ©λ‘ 리μ€νΈλ₯Ό ,λ‘ κ΅¬λΆλ λ¬Έμμ΄λ‘ μ μ₯ν¨
# financial_products = models.TextField(blank=True, null=True)
# # superuser fields
# is_active = models.BooleanField(default=True)
# is_staff = models.BooleanField(default=False)
# is_superuser = models.BooleanField(default=False)
# import os
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fianl_pjt_back.settings")
# import django
# django.setup()
import random
import requests
# from financial_instruments.models import Deposit, Saving
# from financial_instruments.serializers import DepositSerializer, SavingSerializer
first_name_samples = "μ‘λκΉμ΄λ°μ΅μ κ°μ‘°μ€μ₯μ곡μμ νμ€μμ κΆν©μν"
middle_name_samples = "μ°¬ν΄μ§μκ·Όλ―Όμμμ§λνμ£Όμ€μ±νμ§νλν¬μ"
last_name_samples = "μλλ―Όνμ©μ€μ€μ°μνΈνμμ°μμμ§"
# Deposits = Deposit.objects.all()
# Savings = Saving.objects.all()
def random_name():
result = ""
result += random.choice(first_name_samples)
result += random.choice(middle_name_samples)
result += random.choice(last_name_samples)
return result #+ str(random.randint(1, 100))
# νμ¬ API μ λ€μ΄μλ κΈμ΅ μν μ½λ 리μ€νΈ μ μ₯
DP_URL = 'http://finlife.fss.or.kr/finlifeapi/depositProductsSearch.json'
SP_URL = 'http://finlife.fss.or.kr/finlifeapi/savingProductsSearch.json'
API_KEY = '16dd1959199940770f9f4793f549c2a0'
contract_deposit = []
contract_saving = []
params = {
'auth': API_KEY,
# κΈμ΅νμ¬ μ½λ 020000(μν), 030200(μ¬μ μ λ¬Έ), 030300(μ μΆμν), 050000(보ν), 060000(κΈμ΅ν¬μ)
'topFinGrpNo': '020000',
'pageNo': 1
}
# μ κΈ°μκΈ λͺ©λ‘ μ μ₯
response = requests.get(DP_URL, params=params).json()
baseList = response.get('result').get('baseList') # μν λͺ©λ‘
for product in baseList:
contract_deposit.append(product['fin_prdt_cd'])
# μ κΈ λͺ©λ‘ μ μ₯
response = requests.get(SP_URL, params=params).json()
baseList = response.get('result').get('baseList') # μν λͺ©λ‘
for product in baseList:
contract_saving.append(product['fin_prdt_cd'])
dict_keys = ['username', 'gender', 'contract_deposit', 'contract_saving', 'age', 'money', 'salary']
# json νμΌ λ§λ€κΈ°
import json
from collections import OrderedDict
file = OrderedDict()
name_list = []
N = 5000
i = 0
while i < N:
rn = random_name()
if rn in name_list:
continue
name_list.append(rn)
i += 1
# μ μ₯ μμΉλ νλ‘μ νΈ κ΅¬μ‘°μ λ§κ² μμ ν©λλ€.
save_dir = 'accounts/fixtures/accounts/user_data.json'
with open(save_dir, 'w', encoding="utf-8") as f:
f.write('[')
for i in range(N):
# λλ€ν λ°μ΄ν°λ₯Ό μ½μ
file["model"] = "accounts.User"
file["pk"] = i+1
file["fields"] = {
'username': 'test'+str(i), # μ μ μμ΄λ test1,2,3,4,5,6,7
'name': name_list[i], # μ μ μ΄λ¦ λλ€ μμ±
# λλ€ν 0~5κ°μ μνμ κ°μ
νλλ‘ μ½μ
λ¨
# 'contract_deposit': [ DepositSerializer(random.choice(Deposits)).data for _ in range(random.randint(1, 2))], # κΈμ΅ μν 리μ€νΈ
# 'contract_saving': [ SavingSerializer(random.choice(Savings)).data for _ in range(random.randint(1, 3))], # κΈμ΅ μν 리μ€νΈ
'contract_deposit': list(set([ random.randrange(1,38) for _ in range(2) ])) , # κΈμ΅ μν 리μ€νΈ
'contract_saving': list(set([ random.randrange(1,62) for _ in range(random.randint(2, 3)) ])), # κΈμ΅ μν 리μ€νΈ
# 'contract_deposit': '[' + ','.join([str(random.randrange(1,38)) for _ in range(random.randint(1, 2))]) + ']', # κΈμ΅ μν 리μ€νΈ
# 'contract_saving': '[' +','.join([str(random.randrange(1,62)) for _ in range(random.randint(1, 3))]) + ']', # κΈμ΅ μν 리μ€νΈ
'age': random.randint(20, 70), # λμ΄
'money': random.randrange(1000000, 100000000, 1000000), # νμ¬ κ°μ§ κΈμ‘
'salary': random.randrange(1000000, 150000000, 12000000), # μ°λ΄
'password': "a123456789!",
'desire_amount_saving': random.randrange(50000, 3000000, 100000), #μ κΈ λλ€
'desire_amount_deposit': random.randrange(100000, 50000000, 1000000), # μκΈ λλ€
'deposit_period':random.choice([6, 12, 24, 36]), # κΈ°κ° λλ€
'saving_period':random.choice([6, 12, 24, 36]), # κΈ°κ° λλ€
'is_active': True,
'is_staff': False,
'is_superuser': False
}
file['fields']['desire_amount_deposit'] = random.randrange(100000, file['fields']['money'], 1000000)
json.dump(file, f, ensure_ascii=False, indent="\t")
if i != N-1:
f.write(',')
f.write(']')
f.close()
print(f'λ°μ΄ν° μμ± μλ£ / μ μ₯ μμΉ: {save_dir}')