Python MySQL - chyba pymysql.err.InterfaceError (0)

1 odpovědí
18.09.2017 napsal Froux dotaz do kategorie programovani 3 / 7

Python MySQL - chyba pymysql.err.InterfaceError (0)

Vyřešeno

programovani python mysql databaze

Dobrý den, při použití této kontrukce v pythonu s databází mysql

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, '')

20.09.2017 odpověděl Ardoga Uživatel
Zkontrolováno

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

Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace