我的python mysql连接有问题需要帮助。 我的设置是两个Pi在每个服务器上运行服务器。 One Pi(SolartPi)有Mysql数据库收集数据。另一个pi(OfficePi)连接到solarPi数据库,以通过网络连接检索和更新数据。
我的主脚本工作正常,直到我必须重新启动SolarPi以解决维护或电源问题,并且与OfficePi的连接丢失。 officePi上的python脚本然后进入故障循环" 2006年,MYSQL服务器已经消失了#34;以下是此脚本的示例。
import MySQLdb
connSolar = MySQLdb.connect("192.xxx.x.x", "external", "xxxxx", "xxxxx")
#eternal connection to solar pi database
cursSolar = connSolar.cursor()
while 1:
try:
cursSolar.execute("SELECT * FROM dashboard")
connSolar.commit()
for reading in cursSolar.fetchall():
heatingDemand = reading[2] #get heating demand from dB
print heatingDemand
except (MySQLdb.Error, MySQLdb.Warning) as e:
print (e)
connSolar.close()
所以我尝试使用stackoverflow和一个网站的脚本重写这个,如下所示,但是现在当SolarPi重启时出现以下错误,这会终止程序 _mysql_exceptions.OperationalError:(2003,'无法连接到\' 192.xxx.x.x上的MySQL服务器'(111"连接被拒绝") &#39)
import MySQLdb
class DB:
con = None
def connect(self):
self.conn = MySQLdb.connect("192.xxx.x.x", "xxxxx", "xxxxxx", "house") #eternal connection to solar pi database
def query(self, sql):
try:
cursor = self.conn.cursor()
cursor.execute(sql)
except (AttributeError, MySQLdb.OperationalError):
self.connect()
cursor = self.conn.cursor()
cursor.execute(sql)
return cursor
while 1:
db = DB()
sql = "SELECT * FROM dashboard"
cur = db.query(sql)
for reading in cur.fetchall():
heatingDemand = reading[2] #get heating demand from dB
print heatingDemand
OfficePi是否有办法在关闭时继续尝试连接到SolarPi mysql数据库。
答案 0 :(得分:2)
更改代码以检查每个循环否则通过的有效连接:
import MySQLdb
class DB:
def connect(self):
try:
self.conn = MySQLdb.connect("192.xxx.x.x", "xxxxx", "xxxxxx", "house")
except (MySQLdb.Error, MySQLdb.Warning) as e:
print (e)
self.conn = None
return self.conn
def query(self, sql):
try:
cursor = self.conn.cursor()
cursor.execute(sql)
except (AttributeError, MySQLdb.OperationalError):
self.connect()
cursor = self.conn.cursor()
cursor.execute(sql)
return cursor
while 1:
db = DB()
conn = db.connect()
if conn:
sql = "SELECT * FROM dashboard"
cur = db.query(sql)
for reading in cur.fetchall():
heatingDemand = reading[2] #get heating demand from dB
print heatingDemand