[英]Writing to a remote MySql DB with 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 DB和移动宽带覆盖范围时应考虑的问题。 由于我将在外出时扫描接入点,因此我知道例如10分钟没有3G覆盖,并且会检测到200个接入点,所以我想知道如何最好地处理此问题? 将它们写入RAM,临时文件或本地DB,然后在3G连接恢复原位时进行更新?
谢谢
您可以启动一个单独的线程(使用线程模块)来处理对数据库的写入。 然后只需将要写入的信息传递到该线程(也许使用Queue模块)并继续。
数据库线程可以尝试远程写入,如果失败,则将数据写入磁盘上的临时文件,睡眠30秒钟,然后重试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.