Python MySQL - chyba pymysql.err.InterfaceError (0)
Dobrý den, při použití této kontrukce v pythonu s databází mysql
dostávám chybu níže, ačkoliv kód dále pokračuje a má se vykonat i zbytek. Kód nahoře se totiž provádí jen pro kontrolu, zda je něco ve frontě ke zpracování, pokud ano (COUNT(id) > 0), tak program má jet dál.
ahoj co třeba zkusit ten kód bez con.close(), když s databází pracuješ i dále v kódu pythonu
no a pokud chceš jen vědět, zda je něco ve frontě, tak ti stačí jen provést jeden výběr dat bez cyklu
con = mysql.connect(***)
with con:
cur = con.cursor()
cur.execute("SELECT COUNT(id) FROM table WHERE status='0' LIMIT 20")
row = cur.fetchone()
while row is not None:
print(row[0])
id = row[0]
row = cur.fetchone()
cur.close()
con.close()
dostávám chybu níže, ačkoliv kód dále pokračuje a má se vykonat i zbytek. Kód nahoře se totiž provádí jen pro kontrolu, zda je něco ve frontě ke zpracování, pokud ano (COUNT(id) > 0), tak program má jet dál.
Traceback (most recent call last):
File "/var/xxx.py", line 58, in
checkQueue()
File "/var/xxx.py", line 56, in checkQueue
return False
File "/usr/lib/python3.4/site-packages/PyMySQL-0.7.11-py3.4.egg/pymysql/connections.py", line 844, in __exit__
self.commit()
File "/usr/lib/python3.4/site-packages/PyMySQL-0.7.11-py3.4.egg/pymysql/connections.py", line 787, in commit
self._execute_command(COMMAND.COM_QUERY, "COMMIT")
File "/usr/lib/python3.4/site-packages/PyMySQL-0.7.11-py3.4.egg/pymysql/connections.py", line 1071, in _execute_command
raise err.InterfaceError("(0, '')")
pymysql.err.InterfaceError: (0, '')
ODPOVĚĎ
ahoj co třeba zkusit ten kód bez con.close(), když s databází pracuješ i dále v kódu pythonu
con = mysql.connect(***)
with con:
cur = con.cursor()
cur.execute("SELECT COUNT(id) FROM table WHERE status='0' LIMIT 20")
row = cur.fetchone()
while row is not None:
print(row[0])
id = row[0]
row = cur.fetchone()
cur.close()
no a pokud chceš jen vědět, zda je něco ve frontě, tak ti stačí jen provést jeden výběr dat bez cyklu
con = mysql.connect(***)
with con:
cur = con.cursor()
cur.execute("SELECT COUNT(id) FROM table WHERE status='0' LIMIT 20")
row = cur.fetchone()
id = row[0]
cur.close()
if (id > 0):
print("Ve fronte je ", id)
return True
else:
print("Ve fronte nic neni ", id)
return False