Форум сайта python.su
Ниже код. Упрощен до предела от реального, но тоже не работает.
Если в запрос добавить строку:
sql += “ LIMIT 0, 100”
то 100 строк выдает.
Если больше, то зависает. Всего в базе 365 строк.
Совсем недавно это работало.
Как стоит посмотреть?
Ошибку никакую не дает. Просто по времени не проходит.
[Wed Jan 06 11:39:14 2021] [error] [client 5.42.97.165] Script timed out before returning headers: test.py
[Wed Jan 06 11:44:14 2021] [warn] [client 5.42.97.165] Timeout waiting for output from CGI script /home/virtwww/.../http/
#!/home/virtwww/.../local/bin/python # -*- coding: utf-8 -*- import sys import pymysql def master() : con = pymysql.connect(host = 'mysql00.1gb.ru', user = 'user', password = 'password', db = 'gb', charset='utf8', cursorclass=pymysql.cursors.DictCursor ) # weather tablename = 'weather' print ("Content-Type: text/html\n") print ("<html><head><title>helloword.py</title></head>\n<body>\n") print ("<h3>helloword.py</h3>\n") print ("con ") # список ЭТ с начала года actualyear = "2020-01-01" with con: cur = con.cursor() sql = "SELECT `date`, `average` FROM `everydayset` WHERE `date` >= '%s' " # sql += " LIMIT 0, 100" try: print ('<br>sql:\n<br>\n'+ (sql % actualyear).replace('','')) cur.execute(sql % actualyear) print(f'<br>sql:<br>{sql % actualyear}') except Exception as e: print(e.message) print ('<br>error\n<br>') rows = cur.fetchall() print(f"<br>rec {len(rows)}") # for row in rows: # print(row,'<br>\n') print ("</body></html>") ########################################## master() ##################################################
Офлайн
Напринтайте вот это на экран
sql % actualyear
Офлайн
Оказалось всё просто. Старый драйвер базы mysql версии 5.1.хх
На библиотеке pymysql он давал 100-120 записей нормально, а дальше склеивался.
На библиотеке mysql.connector вышла ошибка “Bad hahdshske”. По этой ошибке и нашлась проблема.
Всё отлично!
Спасибо!
Александр
Офлайн
Зачастую так бывает, что глобальная проблема решается довольно простым способом
Офлайн