相关疑难解决方法(0)

使用Python的MySQL未读结果

我使用mysql.connector来做SQL操作.我有一个简短的脚本,它在光标上执行以下操作(字符串)cursor.execute(...):

"use {}".format(db)

"show tables"

command = """
ALTER TABLE Object DROP PRIMARY KEY;
ALTER TABLE Object ADD `id` bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;
ALTER TABLE Object ADD INDEX (`uid`);"""
Run Code Online (Sandbox Code Playgroud)

该脚本遍历多个数据库db.

问题是,在某些时候我收到"未读结果"错误.看来,当我运行脚本时,"使用mydb"会返回一个结果(cursor._have_result = True),当时我没想到.奇怪的是,如果我重新运行完整的脚本,它会运行一段时间,更多的数据库会在以后发出相同的错误.

你能建议一种解决或调查这个问题的方法吗?我能做些什么来防止"未读结果"?

PS:当我重新运行脚本时,ALTER命令对已经完成的数据库失败.不确定是否会导致问题.

python mysql

10
推荐指数
2
解决办法
2万
查看次数

Python mysql.connector InternalError:关闭游标时发现未读结果

我想从游标中读取部分结果,然后在不读取所有结果的情况下关闭它。cursor.close()raisesInternalError: Unread result found.是否可以在不遍历所有结果或使用缓冲区选项的情况下关闭游标?

更新:

我的查询获得大约 3000 条记录,我的目标是获得符合某些条件的前几条记录。在迭代部分结果后,我得到了我想要的。然后我想放弃未读的结果。我不使用缓冲区选项,据我所知,它会立即读取所有结果。这个问题不是Python MySQL 连接器的重复- 使用 fetchone 时发现未读结果

def chooseInstrumentsFromOrigin(self, time):
    sql = """select symbol, name, total_ratio, outstanding_ratio from market_values
            where time = %s order by {captype} asc""".format(captype=self.strategy_data['captype'])

    args = [time]

    conn = mysql.connector.connect(**mysql_config)
    cursor = conn.cursor(dictionary=True)
    cursor.execute(sql, args)

    # This function will return half way.
    symbols = self.chooseInstrumentsFromLeaders(time, cursor)

    # I don't want this line!
    for i in cursor: pass

    cursor.close()
    conn.close()

    return symbols
Run Code Online (Sandbox Code Playgroud)

python mysql mysql-connector-python

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

mysql ×2

python ×2

mysql-connector-python ×1