【发布时间】:2023-01-31 18:06:04
【问题描述】:
我试图将许多行输入到 mariaDB 中的表中。 为此,我想使用 executemany() 来提高速度。 插入的行依赖于使用 SELECT 找到的另一个表。 我发现 SELECT 在 executemany() 中起作用的语句。 还有其他方法可以解决这个问题吗?
import mariadb
connection = mariadb.connect(host=HOST,port=PORT,user=USER,password=PASSWORD,database=DATABASE)
cursor = connection.cursor()
query="""INSERT INTO [db].[table1] ([col1], [col2] ,[col3])
VALUES ((SELECT [colX] from [db].[table2] WHERE [colY]=? and
[colZ]=(SELECT [colM] from [db].[table3] WHERE [colN]=?)),?,?)
ON DUPLICATE KEY UPDATE
[col2]= ?,
[col3] =?;"""
values=[input_tuplets]
运行代码时,我得到与 [col1](SELECT 语句)相同的值,该值对应于第一个连音符的值。
如果 SELECT 在 executemany() 中不起作用,是否还有其他解决方法来解决我正在尝试做的事情? 多谢!
【问题讨论】:
-
您能否提供一个带有参数且最好不要在 MSSQL 仿真模式下的简短可重现示例?
-
感谢您对@GeorgRichter 的回应。
-
感谢您对@GeorgRichter 的回应。我将在下面放一个可重现的(愚蠢的)例子。该示例在不处于仿真模式时有效。我还在仿真模式下处理单个查询。问题是在使用命令
execute_many()时。解决这个问题的一种方法是找到另一种不使用 select 的方法。有任何想法吗? -
CREATE TABLE region (id INT(6) AUTO_INCREMENT PRIMARY KEY,id_country INT(6),region VARCHAR(30))CREATE TABLE countries (id INT(6) AUTO_INCREMENT PRIMARY KEY, country VARCHAR(30))insert into countries (country) values ("ger"),("fra")insert into region (region,id_country) values ("sounth",(select id from countries where country="ger"))
标签: python-3.x mariadb executemany