Commit 4d933089b50791a3d3c32eba0d995ded39e58d58

Authored by Erickson Silva
1 parent b55aab93
Exists in devel

[TranslationServer] Adiciona metódo para reconexão do BD

Showing 1 changed file with 82 additions and 37 deletions   Show diff stats
src/TranslationServer.py
... ... @@ -35,14 +35,24 @@ def dict_mode():
35 35 WEBGL_SIGNS_PATH=os.path.join(SIGNS_PATH, "WEBGL")
36 36 BUNDLES_PATH={"IOS":IOS_SIGNS_PATH, "ANDROID":ANDROID_SIGNS_PATH, "STANDALONE":STANDALONE_SIGNS_PATH, "WEBGL":WEBGL_SIGNS_PATH}
37 37  
38   -def full_mode():
39   - dict_mode()
  38 +def connect_database():
40 39 import MySQLdb, warnings
41 40 global conn
42 41 warnings.filterwarnings('ignore', category=MySQLdb.Warning)
43   - conn = MySQLdb.connect(user="root", db="signsdb")
  42 + while True:
  43 + try:
  44 + conn = MySQLdb.connect(user="root", db="signsdb")
  45 + except:
  46 + print "Trying to connect to the database...\n"
  47 + sleep(5)
  48 + continue
  49 + break
44 50 check_database()
45 51  
  52 +def full_mode():
  53 + dict_mode()
  54 + connect_database()
  55 +
46 56 def logger():
47 57 global app
48 58 logfile = os.path.join(os.environ['HOME'], "translate.log")
... ... @@ -95,54 +105,89 @@ def check_database():
95 105 cursor.close()
96 106  
97 107 def insert_sign_db(sign_name, value, has):
98   - cursor = conn.cursor()
99   - query_string = "INSERT INTO signs (sign_name, amount, has) VALUES (%s, %s, %s)"
100   - cursor.execute(query_string, (sign_name, value, has));
101   - conn.commit()
  108 + try:
  109 + cursor = conn.cursor()
  110 + query_string = "INSERT INTO signs (sign_name, amount, has) VALUES (%s, %s, %s)"
  111 + cursor.execute(query_string, (sign_name, value, has));
  112 + conn.commit()
  113 + except MySQLdb.OperationalError:
  114 + connect_database()
  115 + print "Reconnecting..."
  116 + insert_sign_db(sign_name, value, has)
102 117  
103 118 def update_sign_db(sign_name, amount, has):
104   - cursor = conn.cursor()
105   - query_string = "UPDATE signs SET amount=%s, has=%s WHERE sign_name=%s"
106   - cursor.execute(query_string, (amount, has, sign_name));
107   - conn.commit()
  119 + try:
  120 + cursor = conn.cursor()
  121 + query_string = "UPDATE signs SET amount=%s, has=%s WHERE sign_name=%s"
  122 + cursor.execute(query_string, (amount, has, sign_name));
  123 + conn.commit()
  124 + except MySQLdb.OperationalError:
  125 + connect_database()
  126 + print "Reconnecting..."
  127 + update_sign_db(sign_name, amount, has)
108 128  
109 129 def select_sign_db(sign_name):
110   - cursor = conn.cursor()
111   - query_string = "SELECT amount FROM signs WHERE sign_name=%s"
112   - cursor.execute(query_string, (sign_name));
113 130 try:
114   - amount = cursor.fetchone()[0]
115   - except TypeError:
116   - return None
117   - return amount
  131 + cursor = conn.cursor()
  132 + query_string = "SELECT amount FROM signs WHERE sign_name=%s"
  133 + cursor.execute(query_string, (sign_name));
  134 + try:
  135 + amount = cursor.fetchone()[0]
  136 + except TypeError:
  137 + return None
  138 + return amount
  139 + except MySQLdb.OperationalError:
  140 + connect_database()
  141 + print "Reconnecting..."
  142 + select_sign_db(sign_name)
118 143  
119 144 def insert_translation_db(text, gloss):
120   - cursor = conn.cursor()
121   - query_string = "INSERT INTO translations (text, gloss, amount) VALUES (%s, %s, %s)"
122   - cursor.execute(query_string, (text, gloss, 1));
123   - conn.commit()
  145 + try:
  146 + cursor = conn.cursor()
  147 + query_string = "INSERT INTO translations (text, gloss, amount) VALUES (%s, %s, %s)"
  148 + cursor.execute(query_string, (text, gloss, 1));
  149 + conn.commit()
  150 + except MySQLdb.OperationalError:
  151 + connect_database()
  152 + print "Reconnecting..."
  153 + insert_translation_db(text, gloss)
124 154  
125 155 def update_translation_db(text, gloss):
126   - cursor = conn.cursor()
127   - query_string = "UPDATE translations SET amount=amount+1 WHERE text=%s AND gloss=%s"
128   - cursor.execute(query_string, (text, gloss));
129   - conn.commit()
  156 + try:
  157 + cursor = conn.cursor()
  158 + query_string = "UPDATE translations SET amount=amount+1 WHERE text=%s AND gloss=%s"
  159 + cursor.execute(query_string, (text, gloss));
  160 + conn.commit()
  161 + except MySQLdb.OperationalError:
  162 + connect_database()
  163 + print "Reconnecting..."
  164 + update_translation_db(text, gloss)
130 165  
131 166 def select_translation_db(text, gloss):
132   - cursor = conn.cursor()
133   - query_string = "SELECT amount FROM translations WHERE text=%s AND gloss=%s"
134   - cursor.execute(query_string, (text, gloss));
135 167 try:
136   - amount = cursor.fetchone()[0]
137   - except TypeError:
138   - return None
139   - return amount
  168 + cursor = conn.cursor()
  169 + query_string = "SELECT amount FROM translations WHERE text=%s AND gloss=%s"
  170 + cursor.execute(query_string, (text, gloss));
  171 + try:
  172 + amount = cursor.fetchone()[0]
  173 + except TypeError:
  174 + return None
  175 + return amount
  176 + except MySQLdb.OperationalError:
  177 + connect_database()
  178 + print "Reconnecting..."
  179 + select_translation_db(text, gloss)
140 180  
141 181 def update_platform_db(platform_name):
142   - cursor = conn.cursor()
143   - query_string = "UPDATE platforms SET amount=amount+1 WHERE platform_name=%s"
144   - cursor.execute(query_string, (platform_name));
145   - conn.commit()
  182 + try:
  183 + cursor = conn.cursor()
  184 + query_string = "UPDATE platforms SET amount=amount+1 WHERE platform_name=%s"
  185 + cursor.execute(query_string, (platform_name));
  186 + conn.commit()
  187 + except MySQLdb.OperationalError:
  188 + connect_database()
  189 + print "Reconnecting..."
  190 + update_platform_db(platform_name)
146 191  
147 192 def update_database_statistic(sign_name, platform_name, file_exists):
148 193 if RUN_MODE == "full":
... ...