[英]MySQL/Python Connection InterfaceError to Database
我不明白為什么我得到以下連接錯誤。 我嘗試了很多不同的cur = db.cursor()和cur.close(),db.close()的放置迭代。
循環運行良好一個周期(並成功寫入數據庫)。 但是,在循環的第二個循環中,它給出了下面的錯誤。 我的代碼出了什么問題?
#!/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()
在你的while True:
之后的行while True:
完成執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.