Запись в удаленную БД MySql с Python - PullRequest
0 голосов
/ 15 сентября 2011

Я новичок в программировании, поэтому я прошу прощения за любые вопиющие ошибки, которые я, возможно, сделал в своей концепции дизайна.

Я хочу разработать очень простое приложение с использованием Python, которое будет сканировать точки доступа изарегистрируйте их данные в удаленной базе данных MySql.Мой код в настоящее время работает нормально и без проблем записывает информацию в локальную базу данных, но теперь мой запрос состоит в том, какие подводные камни будут при поиске вставки значений в удаленную БД?Широкополосное соединение будет мобильным соединением 3G, и я обеспокоен тем, что если я запускаю его в черном пятне без покрытия 3G, как я могу заблокировать его, чтобы данные просто удерживались локально до тех пор, пока покрытие не вернется?Таким образом: -

while 1:
    s.send('\n!0 enable CLIENT bssid,mac,manuf,type,minlat,minlon,maxlat,maxlon,agglat,agglon,bestlat,bestlon,gpsfixed,signal_dbm,noise_dbm,firsttime,lasttime')

    buff = s.recv(512)
    tmp = buff.split()
    bssid = tmp[1]
    mac = tmp[2]
    manuf = tmp[3]
    type = tmp[4]
    minlat = tmp[5]
    minlon = tmp[6]
    maxlat = tmp[7]
    maxlon = tmp[8]
    agglat = tmp[9]
    agglon = tmp[10]
    bestlat = tmp[11]
    bestlong = tmp[12]
    gpsfixed = tmp[13]
    signal_dbm = tmp[14]
    noise_dbm = tmp[15]
    firsttime = tmp[16]
    lasttime = tmp[17]

    if bssid != mac:
        cursor.execute("""INSERT INTO data (bssid, mac, manuf, type,
minlat, minlon, maxlat, maxlon, agglat, agglon, bestlat, bestlong,
gpsfixed, signal_dbm, noise_dbm, firstime, lasttime)
                       VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s)""",
                       (bssid, mac, manuf, type, minlat, minlon,
maxlat, maxlon, agglat, agglon, bestlat, bestlong, gpsfixed,
signal_dbm, noise_dbm, firstime, lasttime) )
    else:
        pass

Как уже говорилось, код работает нормально, и это не вопрос о моем коде, а о том, что я должен учитывать при использовании удаленной базы данных MySql и покрытия мобильной широкополосной связи.Пока я буду сканировать точки доступа, я знаю, что у меня может не быть покрытия 3G, например, в течение 10 минут, и я обнаружу, скажем, 200 точек доступа, так что мне просто интересно, как с этим лучше всего справиться?Запишите их в ОЗУ, временный файл или локальную БД, а затем обновите, когда соединение 3G вернется на место?

Спасибо

1 Ответ

0 голосов
/ 16 сентября 2011

Вы можете запустить отдельный поток (используя модуль потоков) для обработки записей в базу данных.Затем просто передайте информацию, которая будет записана в этот поток (возможно, с использованием модуля Queue), и продолжайте.

Поток базы данных может попробовать выполнить удаленную запись, а в случае неудачи записать данные во временный файлдиск, спите в течение 30 секунд и попробуйте снова.

...