我编写了一个循环,将一些数据上传到MySQL数据库。当wifi无法正常工作时,应该将数据写入txt文件。问题是它不会写入txt文件。我初始化了数据库(称为"数据库")和光标(称为"光标")。 txt文件名为" test"。
编辑:通过试验插入和拔出以太网电缆,我意识到当我重新插入电缆时,一堆数据会自动以相同的时间戳发送(可能保存在ram或某个缓存中 - 每当我重新启动时都会发生这种情况程序也是如此,但规模较小)。你认为可能有另一种方式来备份吗?也许通过在txt文件上写入所有内容并在每1GB数据之后擦除txt文件(这样SD就不会在Raspberry Pi 2上获得全部内容)?try:
try:
cursor.execute("""INSERT INTO table (collumn1) VALUES(%s)""", (temperature))
database.commit
except:
text=open("test.txt","a")
test.write(temperature + "\n")
test.close()
except:
print "FAIL"
答案 0 :(得分:0)
由于write()函数需要一个字符缓冲区对象,因此您可能需要将温度转换为字符串,同时将其作为参数传递给write函数。
test.write(str(temperature) + "\n")
答案 1 :(得分:0)
这是我的方法:
import urllib, time, mysqldb
time.sleep(1) # Protects Overlap from execfile
url = "https://www.google.co.uk/"
try:
checkcon = urllib.urlopen(url)
except Exception as e:
"""
If the program gets a socket error
it goes to sleep, after that it restarts
and closes this Script
"""
time.sleep(5)# retry timer
execfile('/path/to/your/file.py')
raise IOError(e)
# Now that you know connection is working
try:
cursor.execute("""INSERT INTO table (collumn1) VALUES(%s)""", (temperature))
database.commit()
except MySQLdb.IntegrityError as e:
# Database Error
with open ('test.txt'), 'a' as f:
f.write(temperature)
f.close()
raise IOError(e)