问题标签 [executemany]

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 投票
2 回答
9189 浏览

python-3.x - PyMySQL 从变量中执行许多 INSERT 列表

我正在尝试使用 pymysql 在 mysql 表中插入一些数据,但失败了。数据已经保存在变量中,所以我需要将它们传递给 INSERT 语句。

这就是我目前正在尝试的......

我试图传递的数据如下所示....

groupID = G9gh472

membersList = [戴夫,鲍勃,迈克,比尔,科林]

列表的长度是未知的,并且可以改变我想要看起来像这样的结果表......

根据阅读其他答案,我已经尝试了一些变体,但到目前为止我没有尝试过任何工作。谢谢大家

0 投票
1 回答
2677 浏览

python - 我可以将 pyodbc executemany 与 sql 存储过程一起使用吗?

我需要将大量数据从 pandas 数据帧写入 MS-SQL 表(一次 1000 行甚至更多行)。

我正在使用pyodbc executmanywith fast_executemany=True,否则每张桌子都需要几个小时。现在,出于安全原因,IT 人员希望我开始使用存储过程而不是直接访问数据库。

问题是,据我所见,SQL 怎么说呢,不如 python 灵活,而且我必须声明传递给 SP 的每个变量,所以我看不到如何将 SP 传递给df.values.tolist()as我今天正在使用executemany直接访问数据库的功能。

例如,假设我有一个数据框 df:

身份证姓名工资

1 乔希 10000

2 迈克尔 5000

3 萨拉 8000

今天我会使用:

并且所有数据框都将立即(并且快速)插入到表中。但是,似乎不可能通过调用 SP 来做同样的事情。

有没有办法使用pyodbc executemany存储过程?

0 投票
0 回答
625 浏览

python - executemany() 没有将所有记录插入数据库

我正在尝试使用执行多个将四 (4) 条记录一次插入 MySQL 数据库表,使用 MySQL 连接器驱动程序。

问题是 executemany() 始终“跳过”前 3 条记录而没有抛出错误,我不明白出了什么问题。

我正在尝试在列表中插入值:

然后这是我的代码:

有谁知道发生了什么?或者为什么前 3 条记录没有插入?

这是表结构:

0 投票
0 回答
142 浏览

python - Python/MySql 适合 cursor.execute 但不适合 cursor.executemany 。'TypeError: 在字符串格式化期间并非所有参数都转换'

我有一个函数可以对 csv 文件进行 mysql 导入。它是逐行导入的,但我想加快速度并使用 cussor.executemany 创建更大的 mysql 插入。在我使用了 6 个月的代码的第一个版本中,它将逐行循环文档,在字段拆分该行之后为每一行调用一次 mysql insert。今天我修改了函数来构建一个列表列表,multi_line_rebuild在列表列表中调用,cursor.executemany而不是cursor.execute. 我将其余代码保持不变。作为调试过程的一部分,我multi_line_rebuild之前确实打印了正确cursor.executemany的列表,当我调试它时它看起来像一个很好的列表列表。此外,当我将代码切换回来时,它也可以正常工作。但是当我尝试做更大的插入时 cursor.executemany它会引发错误“TypeError:并非所有参数都在字符串格式化期间转换。” 不确定下一步要调试

全套错误是

  • 文件“C:\Python35\lib\site-packages\pymysql\cursors.py”,第 193 行,在 executemany self._get_db().encoding)
  • 文件“C:\Python35\lib\site-packages\pymysql\cursors.py”,第 209 行,在 _do_execute_many v = values % escape(next(args), conn)
  • TypeError:字符串格式化期间并非所有参数都转换了

"""


0 投票
0 回答
650 浏览

python - Executemany 在 INSERT 上将“参数数量无效(预期为 12,得到 71625)”抛出到 SQL Server 表中

我从 71k 行的 Excel 文件中读取数据框(通过pandas.read_excel() ),然后想通过turbodbc将其插入到本地 SQL Server 上的数据库中。

代码:

当我执行查询时,它会抛出以下错误:

turbodbc.exceptions.DatabaseError:参数数量无效(预期为 12,得到 71625)

这个错误的原因在哪里?我是新手,这是我第一次尝试执行这样的任务。

0 投票
1 回答
59 浏览

python - 使用python在mysql查询结果上添加字符串的问题

我想在mysql中的查询结果中添加一个字符串。

我试过这段代码:

错误是这样的

mysql.connector.errors.ProgrammingError:查询的参数必须是列表或元组。

我希望结果看起来像这样

知道发生了什么导致我的错误吗?

提前感谢您的帮助

0 投票
0 回答
39 浏览

python - Python MySQL 无法使用包含 25k 条记录的数据集进行更新

重要细节:

  • mysql-connector-python==8.0.18
  • 我正在使用 pypy3,它作为 Python3 的替代实现
  • bulk_data 列表中的每一项都是一个 dict 对象,有两项,每个 key 小于 10 个字符,每个 value 不超过 40 个字符。

目前,我有一个大约 25k 条记录的记录集,其中包含两条数据。我正在尝试使用此信息更新我的数据库中的行,但无论我尝试什么,我都会收到“执行多个语句时使用 multi=True”作为错误。

奇怪之处如下: 1. 我已经尝试使用executemany(sql,data_set)将其作为批量数据集。这不能使用“multi=True” 2. 我已将其分解为单个更新并使用 execute(sql, multi=True)

我在下面使用“executemany”提供了一个代码示例,假设 bulk_data 是我的数据集的一个小版本:

我保留上述内容是因为它是一个应该工作的代码示例,如果需要,我可以恢复。以下是当前设置该过程的工作方式。

上述代码在第四个左右循环之后的错误,并不总是相同的: 使用 cmd_query_iter for statements with multiple queries。

您可以假设上面的更新文本是 100% 正确的。可以肯定的是,我还将我的 SQL 语句导出到一个文本文件中,然后我在我的数据库中运行该文件以确保获得正确的结果,并且确实如此。然而,这不是一个可扩展的解决方案,我正在自动化这个过程,所以通过 cron 启动它的能力很重要。

0 投票
2 回答
76 浏览

python - 带有 psycopg2 的服务器往返次数过多

我正在制作一个脚本,它应该为每个客户创建一个模式。我从一个定义了每个客户的模式应该是什么样子的数据库中获取所有元数据,然后创建它。一切都定义明确,表的类型、名称等。一个客户有许多表(fx、地址、客户、联系人、项目等),每个表都有相同的元数据。

我现在的程序:

  1. 从元数据数据库中获取我需要的一切。
  2. 在 for 循环中,创建一个表,然后更改表并添加每个元数据(这是为每个表完成的)。

现在我的脚本为每个客户运行大约一分钟,我认为这太慢了。它与我有一个循环有关,在那个循环中,我正在更改每个表。我认为我不应该改变(这可能不是那么聪明的方法),而是应该做如下的事情:请注意,这只是一个愚蠢但有效的例子:

但它给了我这个错误(它似乎将表名读取为字符串中的字符串..):

psycopg2.errors.SyntaxError:“'billing'”处或附近的语法错误

第 1 行:如果不存在则创建表 tester.'billing' ('last_seen da...

0 投票
0 回答
1504 浏览

python - 是否可以使用 pyodbc executemany 更新 SQL 表中的多行?

我曾经pyodbc.executemany在数据库表中插入项目。我正在尝试使用更新多行pyodbc.executemany,但我不断收到错误。是否可以pyodbc.executemany用于更新多行?

这是我的代码:

这是我的错误:

0 投票
1 回答
689 浏览

sql - 异常:[IBM][CLI Driver][DB2/LINUXX8664] SQL0104N 意外令牌错误

我有以下数据框

我正在尝试将此推送到 IBM DB2 数据库。

我有以下代码:

但是,我不断收到以下错误:

我不明白为什么会这样。我遵循了这个repo中列出的步骤,但我似乎无法让它工作。我究竟做错了什么?请让我知道我可以做出任何澄清。