如何将多个值插入MYSQL?

1 投票
2 回答
938 浏览
提问于 2025-04-17 17:25

我有以下的查询

INSERT INTO `min01_aggregated_data_800` (`datenum`,`Timestamp`,`QFlag_R6_WYaw`)  VALUES ('734970.002777778','2012-04-11 00:04:00.000','989898') ON DUPLICATE KEY UPDATE `datenum`=VALUES(`datenum`);
INSERT INTO `min01_aggregated_data_100` (`datenum`,`Timestamp`,`QFlag_R6_WYaw`)  VALUES ('734970.002777778','2012-04-11 00:04:00.000','989898') ON DUPLICATE KEY UPDATE `datenum`=VALUES(`datenum`);
INSERT INTO `min01_aggregated_data_300` (`datenum`,`Timestamp`,`QFlag_R6_WYaw`)  VALUES ('734970.002777778','2012-04-11 00:04:00.000','989898') ON DUPLICATE KEY UPDATE `datenum`=VALUES(`datenum`);

我正在使用 mysql.connector 这个包来把数据插入到MySQL数据库中

self.db = mysql.connector.Connect( host = self.m_host, user = self.m_user, password = self.m_passwd, \
        database = self.m_db, port = int( self.m_port ) )
self.con = self.db.cursor( cursor )

self.con.execute( query ) 
self.db.commit()  
self.db.close()
self.con.close()

但是我遇到了一个错误,提示 Use multi=True when executing multiple statements

我尝试在这种情况下使用 multi=True,这样虽然没有出现异常,但数据还是没有插入到MySQL里。我该如何插入多行数据呢?

2 个回答

0

你有三个不同的查询,所以每一个都应该单独运行,也就是说:

self.con.execute(query1)
self.con.execute(query2)
self.con.execute(query3)
0

我看到有三种选择:

  1. 把每个查询单独发送到数据库:

    [...]
    self.con.execute(query1)
    self.con.execute(query2)
    self.con.execute(query3)
    [...]
    
  2. [这个选项被删除了,因为不适用]

  3. 我对这个 multi=True 不是很熟悉,不过可能有一种解决方案是反复调用 self.con.nextset()。根据文档,这个方法是用来处理多个结果集的,但也许在处理多个查询请求时也需要用到。

撰写回答