当前位置: 首页 > 面试题库 >

使用Python的MySQL未读结果

皇甫琛
2023-03-14
问题内容

我使用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`);"""

该脚本遍历几个数据库db

问题是,在某些时候我会收到“发现未读结果”错误。看来,当我运行脚本时,在某个时候“我的mydb”会返回一个结果(cursor._have_result =
True),而我没有想到这一点。奇怪的是,如果我重新运行完整的脚本,它将运行更长的时间,并且会有更多的数据库在以后出现相同的错误。

您能否提出解决或调查此问题的方法?我有什么办法可以防止“未读结果”?

PS:当我重新运行脚本时,对于已经完成的数据库,ALTER命令失败。不知道这是否会引起问题。


问题答案:

使用MySQL连接器/ Python中, 发现未读的结果 ,当您使用在不同的地方连接对象而不读取结果可能发生。这不是一个可以解决的问题。您可以使用
缓冲 选项
立即读取结果。

如注释中所述,最好拆分语句并分别执行。

如果要执行多个语句,则需要对MySQLCursor.execute()方法使用 multi = True
选项
(自Connector / Python
v1.0.4起)。实际上,如果您不使用 multi 选项并发送多个语句,则将引发InterfaceError。(我也怀疑这里有一个错误。)

附加说明:

  • 可以执行MySQLConnection.database属性,而不是执行USE命令来更改数据库。
  • 最好将更改分组到一个ALTER TABLE语句中,如下所示:

更改表t1删除主键,添加ID INT不为空AUTO_INCREMENT关键字优先,添加索引(c1)



 类似资料:
  • 问题内容: 我正在将JSON数据插入MySQL数据库 我正在解析JSON,然后使用python连接器将其插入到MySQL数据库中 通过试用,我可以看到错误与这段代码有关 我已经插入了较高级别的详细信息,现在正在搜索数据库以将此较低级别的信息与其父级关联。找到此唯一值的唯一方法是通过带有time_stamp的起点和终点坐标进行搜索。我相信逻辑是合理的,并且通过在此部分之后立即打印leg_no,我可以

  • 问题内容: 与MySQL使用Python在控制台中打印结果一样,最简单的打印MySQL查询结果的方法是什么?例如,我想得到类似的东西: 注意:我不知道每列的最大宽度是先验的,但是我希望能够不重复两次就可以做到这一点。是否应为每列添加查询的length()?MySQL如何做到这一点,以免严重影响内存或处理时间? 编辑 我认为这与问题无关,但这是我发送的查询: 这是我使用的python代码: 但是此代

  • 问题内容: 我有一个fortran程序会生成未格式化的文件,并且正在尝试将它们读入Python。 我有源代码,因此我知道第一个“块”是的字符数组,依此类推。所以我开始 并且是一个80长度的元组,由长度为1的字符串组成;其中一些内容是十六进制字符串(例如)。如何将这个变量转换为单个ascii字符串? 问题答案: 大多数Fortran未格式化文件将包含额外的字节来指定记录的长度。记录是用单个Fortr

  • 问题内容: 在Obj-C中,常见的做法是使用便利功能执行常见的操作,例如为视图配置自动布局: 如果您只需要设置约束而忘了它,则可以调用: 如果要稍后存储约束以便可以删除/修改约束,则可以执行以下操作: 我想快速执行此操作,但是如果我调用上述函数并且不捕获返回的约束,则会收到警告: 很烦人。有什么方法可以让Swift知道我并不总是想获取返回值吗? 注意:我知道这一点。这很丑陋,而不是我要的东西: 问

  • 我有MySQL(数据库:条目,表格:问题列表) 我想用python阅读并打印出来...但是当我运行如下代码时,它显示错误。 Traceback(最近一次调用last):文件“C:\ Users \ Administrator \ Desktop \ Chatbot-ReadData \ excel MySQL . py”,第8行,在database="items "文件“C:\ Users \ A

  • 本文向大家介绍android使用mysql的方法总结,包括了android使用mysql的方法总结的使用技巧和注意事项,需要的朋友参考一下 android可以使用mysql数据库,android连接数据库的方式有两种。 第一种是通过连接服务器,再由服务器读取数据库来实现数据的增删改查,这也是我们常用的方式。 第二种方式是android直接连接数据库,这种方式非常耗手机内存,而且容易被反编译造成安全

  • 问题内容: 我需要从Gmail检索未读邮件。我正在使用Java Mail API。默认情况下,此API从最早的邮件检索到最新的邮件。但是我需要先检索最近的邮件。可能吗?提前致谢。 问题答案: 这是例子。不要忘记在类路径中添加javax.mail。

  • 问题内容: 我正在尝试使用PDO从表中检索数据,只是我似乎无法向浏览器输出任何内容,只是得到了一个纯白页。 问题答案: 例。 这是您的dbc类 您的PHP页面: