问题标签 [mysql-connector-python]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
836 浏览

python-3.x - 将 cursor.callproc 的结果保存在 dict 中

我正在尝试MySQL使用存储过程从数据库中获取一些数据并将其存储在 dict 中(如 blair here所述):

光标是使用选项创建的dictionary=True。的输出print(result)是:

[{'manufacturers_id':0,'alarm_threshold':10,'users_id_tech':0,'name':'item1','entities_id':0,'notepad':无,'locations_id':0,'groups_id_tech': 0,'consumableitemtypes_id':0,'id':1,'comment':'','is_deleted':0,'ref':''}]

我尝试使用以下代码访问键的值name(即item1):

TypeError:列表索引必须是整数,而不是 str

和:

NameError:名称“名称”未定义

我认为来自 blair 的代码会创建一个可以通过键访问其值的字典(例如“名称”)?这是错的还是我做错了什么?

0 投票
1 回答
2571 浏览

python - Python MySQL 连接器 - 游标不会提交()

我有 python (3.4) 代码,光标不会将其提交到数据库。如果我通过 MySQL 客户端手动输入更改,我可以提交更改(因此我确定我UPDATE对相关表具有权限)。此代码仅使用 csv 文件中的信息更新表:

因为它是一个准备好的语句,我不相信我可以检索到实际执行的 SQL 字符串(但调用print(update_product % data)让我看看语句应该如何出现)。从手动复制粘贴到 python 解释器,我相信 SQL 是好的(cursor.fetchwarnings()不抱怨)。输入数据好;打印语句正确读取。它只是不会提交 - 对于这些行,数据库中的所有信息都保持为零。我已经将此脚本与几乎相同的脚本进行了比较,似乎没有什么不同。我也试过cnx.autocommit = True了,也不行。

任何人都知道出了什么问题,或者如何获取cursor.execute()connector.commit()返回状态以便我可以调试?API似乎没有提到,测试让我相信这些方法实际上并没有返回值。因为这个,我觉得有点盲目——我应该调用一个方法,并祈祷有什么事情发生?

编辑: 出于沮丧,我刚刚使用print(update_product % data). 数据库接受它就好了。我还可以products通过 python 用静态值更新表,但不能更新动态值。

0 投票
1 回答
9716 浏览

mysql - Python - Mac OSX 10.10 中的 MySQL 连接器错误

我使用此代码检查我使用 mysql 提供的安装程序安装的 mysql 包

我在终端运行文件,结果是,

高度赞赏帮助。

0 投票
1 回答
831 浏览

python - Python/MySQL 连接器:一些查询根据输入挂起

所以我正在使用 Python MySQL 连接器,并且我正在尝试编写一些代码,这些代码将根据行是否符合我给它的标准来选择一些行。此表有一个化学品列和一个加利福尼亚县的列(以及其他)

以下所有代码行都可以通过 MySQL 控制台完美运行:

对于上面的每个语句,我将语句放在引号中并通过 python 执行。然后我尝试运行一个简单的脚本。例如

你们能猜出 Python 脚本处理的上述 5 个语句中的哪一个吗?只有第三和第五......这对我来说毫无意义,因为它们几乎是一样的,接受我改变了化学物质,它们都可以在 MySQL 命令行上完美运行。更具体地说,当我说该命令在 Python 上不起作用时,我在循环中的计数器只是在中间冻结并停止执行任何操作。对于第三条和第五条语句,循环最终退出并在循环之后开始打印内容。谁能帮我确定我调试代码可能有什么问题或不同的方法?感谢您的帮助!

0 投票
1 回答
1566 浏览

python - Python 异常:RuntimeError:超出最大递归深度/不可打印的运行时错误

我在一个脚本上随机收到此异常,该脚本使用 mysql-connector 接收要插入 mysql 数据库的项目:

我也偶尔会得到:

编码:

第 47 行是:

我应该将其封装在其他东西中吗?抱歉,我不知道 python,我知道 Java,我只是想修复我采用的这个脚本。还有其他随机异常,但一次一步,这些似乎在每次提交时都会流入?试图弄清楚这是否是脚本似乎无法在重压下插入数据库的原因,提交是该脚本的新添加,是其他人尝试修复的。

每当脚本无法插入数据库时​​,我们也会得到:

这通过上面的 log.error 行而不是转储异常的 stdout 错误文件显示在官方日志记录中。

任何帮助将不胜感激,谢谢。

0 投票
1 回答
908 浏览

python - 在 python 的侧面安装中安装 mysql-connector(除了默认的 python 安装)

我有一个默认安装了 python2.6.6 的 linux CENTOS 6.6 服务器。

我需要一个 2.7 的 python 版本,但由于各种系统原因,CENTOS 6.6 需要其默认的 python2.6.6 安装(yum 取决于 2.6.6)。

因此,我将 python 2.7 安装在一个单独的位置 (/usr/local/lib/python2.7/)。现在我正在尝试在 2.7 版本中安装我在 python2.6.6 中使用的所有包。

我在 python2.6.6 中安装了 mysql-connector 库,该库是使用 .rpm 文件安装的:

我不确定如何安装 mysql-connector 库,以便 python2.7 识别安装。

我注意到python2.6.6中的mysql-connector库。(默认)安装位于此处:

解决方案是简单地将mysql目录和egg-info文件复制+重命名,/usr/local/lib/python2.7/site-packages/还是我需要遵循其他/其他步骤。

我不确定副本是否可以解决此问题,因为 mysql 目录具有特定于 python2.6.6__init__.pyc并且__init__.pyo可能在安装过​​程中构建的路径的文件。

0 投票
1 回答
4181 浏览

python - AttributeError:__exit__ on python 3.4

原始代码:

通过 IDLE 运行后,会弹出红色错误

我检查了文件,无法提交错误,需要帮助。

0 投票
0 回答
130 浏览

python - 使用 Python / 连接器对事务进行分组

使用 Python / mysql 游标/连接 API,我习惯于在关闭游标之前调用 myConnection.commit()。我想在不同的战略点开始使用 myConnection.rollback(),除了一个小问题:

我有很多小功能,打开与数据库的连接(InnoDB 引擎),创建游标,执行插入/更新操作,然后 .commit() 更改,.close() 游标,然后 .close()联系。有时在同一个函数中有多个游标创建/关闭周期。到目前为止,还不是问题。

但是,一些较大的函数会调用几个较小的函数——每个函数都可以在本地打开自己的连接、创建自己的游标、提交自己的更改,然后在返回之前关闭自己的连接。

是否存在用于分组事务的公认 Python / 连接器模式,即划定更大事务的开始,其中对调用 .commit() 的函数的任何后续调用都不做任何事情 - 直到更大的事务完成,然后所有待处理的 .commit( ) 调用是否允许完成?

0 投票
2 回答
1367 浏览

python - 连接器/Python Select 语句不起作用

有人可以帮我弄清楚以下代码有什么问题。这是一个 Python 应用程序,它试图使用Connector/Python从 mysql 数据库中进行选择

它产生以下错误:

1064 (42000): 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '%s' 附近使用正确的语法

当我检查 mysql 日志时,我看到以下内容:

SELECT * FROM channel WHERE phone_number = %s

这意味着它不会替换电话号码。

0 投票
2 回答
1195 浏览

mysql - Python 在使用 MySQL 连接器的 fetchall 上挂起

我对 Python 和 MySQL 还很陌生。我正在编写代码,查询 60 个不同的表,每个表在 5 分钟内每秒包含记录。该代码每五分钟执行一次。少数查询可以达到 1/2 MB 的数据,但大多数在 50 KB 范围内。我正在使用 MySQL 连接器/Python 在运行 Windows 7,64 位的工作站上运行。我正在使用 PowerShell windows 测试我的代码,但代码最终将作为计划任务运行。工作站有足够的 RAM (8 GB)。其他进程正在运行,但根据任务管理器,只使用了一半的内存。大多数情况下,一切都按预期执行,但有时处理会挂起。我在代码中插入了打印语句(我还使用了调试器跟踪)来确定挂起发生的位置。它发生在对 fetchall 的调用中。以下是代码的相关部分。所有大写字母都是(伪)常量。

. . . 使用数据的其他处理。. . db_cursor.close() mncdb.close() 。. . 没有提出任何例外。在单独的 PowerShell 窗口中,我可以访问代码正在处理的数据。对于我的测试,数据库中的所有数据都是在代码执行之前加载的。在测试代​​码时没有进程正在更新数据库。挂起可能发生在代码的第一次执行或执行几个小时后。

我的问题是什么可能导致代码挂在 fetchall 语句上?