【问题标题】:Writing to a remote MySql DB with Python使用 Python 写入远程 MySql 数据库
【发布时间】:2011-09-15 02:42:32
【问题描述】:

我是编码新手,因此对于我在设计概念中可能出现的任何公然失礼,我深表歉意。

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

谢谢

【问题讨论】:

  • 你确定代码编译执行正常吗?对我来说,它看起来不像是有效的 Python 代码。你也经常重复自己,这可能是一个设计问题,但相对不重要。我没有资格回答你的实际问题。
  • RoundTower 我刚刚在我的帖子中复制并粘贴了一段代码。由于代码在工作时不需要审查,因此我可能没有发布一些结束语句,但足以说明代码在将数据插入本地数据库时确实有效。谢谢

标签: python mysql 3g-network


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多