使用Python写入远程MySql数据库

2024-09-28 22:44:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编码还不熟悉,所以对于我在设计概念中可能犯的任何明显的错误,我深表歉意。在

我想用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数据库和移动宽带覆盖时应该考虑的问题。由于我将在外出时扫描接入点,我知道我可能在10分钟内没有3G覆盖,并且会检测到200个接入点,所以我想知道如何最好地处理这个问题?将它们写入RAM、临时文件或本地数据库,然后在3G连接恢复时进行更新?在

谢谢


Tags: 数据库mactypetmpdbmbssidmanufminlat
1条回答
网友
1楼 · 发布于 2024-09-28 22:44:21

您可以启动一个单独的线程(使用线程模块)来处理对数据库的写入。然后将要写入该线程的信息传递给该线程(可能使用队列模块)并继续执行。在

数据库线程可以尝试远程写入,如果失败,则将数据写入磁盘上的临时文件,休眠30秒,然后重试。在

相关问题 更多 >