2016-10-20 22 views
0

私はプログラムによっていくつかのデータを連続的に測定し、それらをmysqlデータベースに保存しています。私が直面している問題は、サーバーがデータベースに接続できないときに、何らかの理由でPythonプログラムが動作しなくなってしまうことです(DBメンテナンスなど)。mysqlデータベースに接続できなくてもPythonプログラムを実行し続ける

ここで必要なのは、データベースに接続できなくてもプログラムを実行し続けることです。

def MyDB(): 
try: 
    db = MySQLdb.connect(host="X.X.X.X", user="user1", passwd="passwd1", db="DB1") 
    cursor = db.cursor()  
    cursor.execute("INSERT INTO Table1 (timestamp, x1, x2, x3, x4) VALUES ('%s', '%s', '%s', '%s', '%s')" % (x1, x2, x3, x4)) 
    db.commit() 
    db.close() 
except MySQLdb.Error as e: 
    print (e) 
#MyDB 

while 1: 
    # Here my code doing some measurement 
    Measurement()  
    # Here I called MyDB to store my measured data 
    MyDB() 

私が取得エラーメッセージは次のとおりです。 OperationalError:(2003、「 'XXXX' でMySQLサーバーに接続できません)

そして、私のプログラムを停止

+0

こんにちは、あなたは、ソースコード、例外/ソフトウェアが失敗したときに投げているような詳細を提供する必要があります、どのようにあなたのpythonアプリケーションを実行している、それはサービスですか?ターミナルから?乾杯。 – Willemoes

+0

こんにちは、私は私の質問を更新しました。端末からのubunterサーバから実行されるプログラム。 – Abs

+0

あなたのコード全体ではありません。あなたは 'MyDB()'とどう呼ばれますか? – Psytho

答えて

0

したいので。機能MYDBで何が起こるかの障害、私の提案は除いて...しようとして関数呼び出しをラップすることです関係なく動作していない続行するにはあなたのプログラム。

while True: 
    Measurement()  
    try: 
     MyDB() 
    except Exception as e: 
     print e 

ますtracebackモジュールを使用して、キャッチされた例外のより良いスタックトレースを出力することができます。

+0

あなたの提案は、プログラムの停止と同じことを依然として試してみました。 – Abs

関連する問題