1
なぜ次の接続エラーが発生するのか分かりません。私は、cur = db.cursor()とcur.close()、db.close()の配置のさまざまな反復を試みました。MySQL/Python Connection Interfaceデータベースへのエラー
ループは1サイクルで正常に実行されます(正常にデータベースに書き込まれます)。しかし、ループの2番目のサイクルでは、以下のエラーが表示されます。私のコードで何が間違っていますか?
#!/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