Ребят - дано куча json файлов - содержащих данные. Надо поместить данные в базу mysql.Как сделать это быстрее ?
На python написал скрипт: Он работает, но с ростом БД операция вставки данных (INSERT) стала ~ 3 секунды. Подскажите как быстрее справиться с задачей .. может есть смысл записывать данные в разные таблицы - а потом соединить воедино ?
from Sql import Sql
import sys
import json
import os
import datetime
sql = Sql(db='homestead',user='homestead',passwd='secret',host='192.168.10.10')
def getdata(path):
fd = open(path)
with fd as f:
data = json.load(f)
fd.close()
return data
def save(data , channelname):
i = 0
for d in data:
# проверку на "коллизию" убрал - думая что так быстрее будет
# query = "SELECT id FROM user_data where channel_name = '%s' and user_id = '%d' ;" % (channelname, d['user']['id'])
# res = sql.result(query)
# count = len(res)
# if(count == 0):
if 'user' in d:
if 'id' in d['user']:
user_id = d['user']['id']
else:
break
if 'first_name' in d['user']:
first_name = d['user']['first_name']
else:
first_name = ' '
if 'last_name' in d['user']:
last_name = d['user']['last_name']
else:
last_name = ' '
if 'username' in d['user']:
username = d['user']['username']
else:
username = ' '
if 'type' in d['user']:
type_val = d['user']['type']
else:
type_val = ' '
else:
print('Oops')
break
ctime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S");
data = {'channel_name' : channelname.encode("utf-8") ,
'user_id' : user_id,
'user_first_name' : first_name.encode("utf-8"),
'user_last_name': last_name.encode("utf-8"),
'username' : username.encode("utf-8"),
'type' : type_val.encode("utf-8") ,
'verified' : 1 ,
'role': d['role'].encode("utf-8") ,
'phone' : '',
'created_at': ctime,
'updated_at': ctime
}
i += 1
print(i, data)
result = sql.insert('user_data' , data)
# print(result)
#query = "UPDATE saved_userdata SET parsed=1, mark='%d' WHERE path ='%s';" % (i ,'./' + channelname)
#update=sql.update('saved_userdata',{'parsed': 1 , 'mark': i},{'path': channelname})
#print(update)
# else:
# continue
try:
print('Running script')
query = ("SELECT * FROM saved_userdata where parsed = 0")
res = sql.result(query)
for r in res:
path = r['path'][2:]
print(path)
if os.path.isfile(path):
data = getdata(path)
channelname = path.split("./", 1)
print(channelname)
save(data, channelname[0])
else:
print('I cant read path ( ')
continue
except Exception as e:
print("EXCEPTION :" ,e)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть таблица (в ней может быть 1 запись, а может 999999999999):
Как выбрать записи до ключевой при ее существовании а если ее нет сделать полную выборку
Можно ли в MySQL установить права для пользователя таким образом, что бы он не мог выполнять запросы на insert, update, delete, но мог вызывать хранимые...
Случилась проблема с zabbix 34 после перезагрузки не стартует mysql ругается на память