1
我不明白爲什麼我得到以下連接錯誤。我已經嘗試了許多不同的迭代來放置cur = db.cursor()和cur.close(),db.close()。MySQL/Python連接InterfaceError到數據庫
循環正常運行一個週期(併成功寫入數據庫)。但是,在循環的第二個循環中,它給了我下面的錯誤。我的代碼有什麼問題?
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
import datetime
import PCF8591 as ADC
import math
import Adafruit_DHT as DHT
import Adafruit_DHT
from time import strftime
DHT_TYPE = Adafruit_DHT.DHT11
#setup to write to MySQL database
import MySQLdb
#define how long to wait between readings
FREQUENCY_SECONDS = 2
DO = 17
GPIO.setmode(GPIO.BCM)
#Variables for MySQL
db = MySQLdb.Connection(host= "localhost",
user="mysql-user",
passwd="password",
db="database")
#humiture variables
Sensor = 11
humiture = 17
print('Press Ctrl-C to quit.')
def setup():
print 'Setting up, please wait...'
ADC.setup(0x48)
GPIO.setup(DO, GPIO.IN)
def destroy():
GPIO.cleanup()
while True:
humidity, temperature = DHT.read_retry(Sensor, humiture)
tempF = (temperature*1.8)+32
datetimeWrite = (time.strftime("%Y-%m-%d ") + time.strftime("%H:%M:%S"))
print datetimeWrite
print('Temperature: {0:0.1f} F'.format(tempF))
print('Humidity: {0:0.1f} %'.format(humidity))
#connect to wordpress database:
cur = db.cursor()
sql = ("""INSERT INTO humiture (dateTime,temp, humidity) VALUES (%s,%s,%s)""",(datetimeWrite,tempF,humidity))
try:
print "Writing to database..."
# Execute the SQL command
cur.execute(*sql)
# Commit your changes in the database
db.commit()
print "Write Complete"
except KeyboardInterrupt:
destroy()
break
cur.close()
db.close()
# Wait before taking another reading
time.sleep(FREQUENCY_SECONDS)
錯誤消息:
Traceback (most recent call last):
File "Sensor_MySQLv2.py", line 54, in <module>
cur.execute(*sql)
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 155, in execute
charset = db.character_set_name()
_mysql_exceptions.InterfaceError: (0, '')
這樣做。我將db.close移入了except部分,現在它循環並寫入數據庫,沒有任何問題。謝謝! – RPiNoob