首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python mysql连接错误MAX_QUESTIONS资源

python mysql连接错误MAX_QUESTIONS资源
EN

Stack Overflow用户
提问于 2020-07-11 03:36:34
回答 2查看 56关注 0票数 0

我定期(每隔20分钟)从一个小型服务器的MySQL数据库中获取数据。我的数据流已经平稳运行了两个星期,直到今天它中断了,

代码语言:javascript
复制
mysql.connector.errors.ProgrammingError: 1226 (42000): User 'HH' has exceeded the 'max_questions' resource (current value: 60)

我尝试重新启动脚本,但仍然得到相同的错误。当我的脚本每次运行时,它会进行8次查询,因此每小时总共有24次查询,我是如何超过资源的?每个查询都非常简单,我请求具有特定站点ID且在特定时间戳之后的记录。下面是我用来请求数据的两个函数

代码语言:javascript
复制
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以下

EN

回答 2

Stack Overflow用户

发布于 2020-07-14 01:40:53

假设"max_questions“是围绕"max_connections”的某种转换问题,那么您可能需要停止为每个查询初始化一个新的数据库连接,而是重用一个连接。

票数 0
EN

Stack Overflow用户

发布于 2020-07-14 01:48:30

您可以在phpmyadminmysql console上尝试此操作,但您登录的用户应具有进行这些更改的权限。

就像一个普通的查询一样运行它,与选择哪个数据库无关。重要的是,您的db用户应该对此拥有特权。

对于unlimited,您可以将max_questions设置为0,也可以将其设置为任何特定值

代码语言:javascript
复制
SET @MAX_QUESTIONS=0;
FLUSH PRIVILEGES;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62841205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档