Я периодически (каждые 20 минут) извлекаю данные из базы данных MySQL на небольшом сервере. Мой поток данных работал без сбоев в течение 2 недель, пока сегодня он не сломался и получил
mysql.connector.errors.ProgrammingError: 1226 (42000): User 'HH' has exceeded the 'max_questions' resource (current value: 60)
. Я пытался перезапустить скрипт, но продолжал получать те же ошибки. Каждый раз, когда мой скрипт запускается, он выполняет 8 запросов, итого 24 запроса в час, как я превышаю ресурс? И каждый запрос довольно прост: я прошу записи с определенным идентификатором станции и после определенной временной метки. Вот две функции, которые я использую для запроса данных
import pandas as pd
import mysql.connector as mysql
from datetime import datetime, timedelta
def grabSoilAfter(self, lastTime, station_name, sensor_id):
db = mysql.connect(
host = self.host,
user = self.user,
database = self.database,
password = self.password
)
cursor = db.cursor()
cols = ['data' + str(k) for k in range(0, 7)]
cols_str = ', '.join(cols)
sql_command = "select add_utc, " + cols_str + ' from weatherdata' + \
' where station_ID = \''+station_name + \
'\' and add_utc > \'' + lastTime.strftime('%Y-%m-%d %H:%M:%S') + '\' ' + \
'order by add_utc asc'
cursor.execute(sql_command)
dat = cursor.fetchall() ## it returns a list of all databases present
dat_pd = pd.DataFrame(dat, columns = ['time_utc','4inch', '8inch', '12inch', '16inch', '20inch', '24inch', '28inch'])
cursor.close()
db.close()
return dat_pd
def grabWeatherAfter(self, lastTime, station_name, sensor_id):
db = mysql.connect(
host = self.host,
user = self.user,
database = self.database,
password = self.password
)
cursor = db.cursor()
cols = ['data' + str(k) for k in range(0, 7)]
cols_str = ', '.join(cols)
sql_command = "select add_utc, " + cols_str +' from weatherdata' + \
' where station_ID = \''+station_name + \
'\' and add_utc > \'' + lastTime.strftime('%Y-%m-%d %H:%M:%S') + '\' ' + \
'order by add_utc asc'
dat = pd.read_sql_query(sql_command, db)
db.close()
Для функции grabWeatherAfter()
я использую pandas.dataframe.read_sql_query
для автоматического форматирования данных. Что мне делать, чтобы уменьшить мой QUESTIONS
до уровня ниже 60
?