Python оптимизирует добавление информации в базу данных из REST - PullRequest
0 голосов
/ 10 сентября 2018

Я создал код, который использует REST для получения информации о задаче, предоставив ключ задачи, проблема в том, что мне нужно сканировать от 180 000 000 до 999 999 999, не зная, какие ключи существуют, а какие нет код работает правильно, но очень медленно ... и просто сканирует 100 000 000 займет около года

как я могу подойти к этому по-другому? Я пытался реализовать многопроцессорность, но безуспешно

это мой код:

db = sqlite3.connect('databse.db')
cursor = db.cursor()

for key_iterator in range(180021820,999999999):
    xml_result = REST_requests_test.getTaskInfo(str(key_iterator))

    fault_code = int((xml_result.find("faultcode")))
    if (fault_code != -1):
        print ("key " +str(key_iterator) + " Not Found")
        continue   

    jsn_info = json.dumps(xmltodict.parse(xml_result)) #Parse xml output from REST request to a JSON syntax
    jsn_info = cleanJson(jsn_info) #clean unneccecery stuff from JSON
    jsn_info.encode('utf-8')

    my_dict = json.loads(jsn_info) #create dictionary from json

    is_scheduled = int(my_dict["IsScheduled"]) #get task scheduling status

    if (is_scheduled):
        print (str(key_iterator)+" Task already schedule, Skipping")
        continue

    print ("Inserting "+str(key_iterator)+" to database")
    l = list(my_dict.values())
    str1 = [tuple(my_dict.values())]

    columns = ', '.join(my_dict.keys())
    placeholders = ', '.join('?' * len(my_dict))
    query = 'INSERT INTO Tasks (%s) VALUES ' % (columns)
    str2 = str(str1)
    str2 = str2[1:-1]
    query = query + " " + str2

    cursor.execute(query)
    db.commit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...